From ac13832c735068d6f3676ab175feedef3a5ca8ee Mon Sep 17 00:00:00 2001
From: Anthony Carathimas <acarathimas@octolabs.io>
Date: Tue, 12 Mar 2024 12:27:57 -0400
Subject: [PATCH 1/5] a lot of fixes

---
 appengine.go                                  |    2 +-
 blobstore/blobstore.go                        |    2 +-
 blobstore/read.go                             |    2 +-
 datastore/datastore.go                        |    2 +-
 datastore/internal/cloudkey/cloudkey.go       |    2 +-
 datastore/internal/cloudpb/entity.pb.go       |    2 +-
 datastore/key.go                              |    2 +-
 datastore/load.go                             |    2 +-
 datastore/load_test.go                        |    2 +-
 datastore/query.go                            |    2 +-
 datastore/query_test.go                       |    2 +-
 datastore/save.go                             |    2 +-
 delay/delay_test.go                           |    2 +-
 go.mod                                        |    1 -
 go.sum                                        |    2 -
 identity.go                                   |    2 +-
 image/image.go                                |    4 +-
 internal/aetesting/fake.go                    |    2 +-
 internal/api.go                               |   25 +-
 internal/api_classic.go                       |    2 +-
 internal/api_common.go                        |    2 +-
 internal/api_test.go                          |   24 +-
 .../app_identity/app_identity_service.pb.go   |  611 --
 .../app_identity/app_identity_service.proto   |    4 +-
 internal/base/api_base.pb.go                  |  642 +-
 internal/base/api_base.proto                  |   16 +-
 internal/blobstore/blobstore_service.pb.go    | 1272 ++-
 internal/blobstore/blobstore_service.proto    |   28 +-
 internal/capability/capability_service.pb.go  |  395 +-
 internal/capability/capability_service.proto  |    6 +-
 internal/channel/channel_service.pb.go        |  534 +-
 internal/channel/channel_service.proto        |   10 +-
 internal/datastore/datastore_v3.pb.go         | 8140 +++++++++++------
 internal/datastore/datastore_v3.proto         |  213 +-
 internal/image/images_service.pb.go           | 2498 +++--
 internal/image/images_service.proto           |   79 +-
 internal/internal.go                          |    2 +-
 internal/log/log_service.pb.go                | 2224 +++--
 internal/log/log_service.proto                |   62 +-
 internal/mail/mail_service.pb.go              |  634 +-
 internal/mail/mail_service.proto              |   16 +-
 internal/memcache/memcache_service.pb.go      |  963 +-
 internal/memcache/memcache_service.proto      |   75 +-
 internal/modules/modules_service.pb.go        | 1556 ++--
 internal/modules/modules_service.proto        |   16 +-
 internal/regen.sh                             |   17 +-
 internal/remote_api/remote_api.pb.go          |  664 +-
 internal/remote_api/remote_api.proto          |   16 +-
 internal/search/search.pb.go                  | 6226 ++++++++-----
 internal/search/search.proto                  |  142 +-
 internal/socket/socket_service.pb.go          | 5045 ++++++----
 internal/socket/socket_service.proto          |   96 +-
 internal/system/system_service.pb.go          |  695 +-
 internal/system/system_service.proto          |    4 +-
 internal/taskqueue/taskqueue_service.pb.go    | 5915 +++++++-----
 internal/taskqueue/taskqueue_service.proto    |  188 +-
 internal/transaction.go                       |    4 +-
 internal/urlfetch/urlfetch_service.pb.go      |  956 +-
 internal/urlfetch/urlfetch_service.proto      |   37 +-
 internal/user/user_service.pb.go              | 1013 +-
 internal/user/user_service.proto              |   28 +-
 internal/xmpp/xmpp_service.pb.go              | 1348 ++-
 internal/xmpp/xmpp_service.proto              |   19 +-
 log/log.go                                    |    2 +-
 log/log_test.go                               |    2 +-
 mail/mail.go                                  |    2 +-
 mail/mail_test.go                             |    2 +-
 memcache/memcache.go                          |    2 +-
 module/module.go                              |    2 +-
 module/module_test.go                         |    2 +-
 remote_api/client.go                          |    2 +-
 remote_api/remote_api.go                      |    2 +-
 runtime/runtime_test.go                       |    2 +-
 search/search.go                              |    2 +-
 search/search_test.go                         |    2 +-
 socket/socket_classic.go                      |    2 +-
 taskqueue/taskqueue.go                        |    2 +-
 urlfetch/urlfetch.go                          |    2 +-
 user/oauth.go                                 |    6 +-
 user/user.go                                  |   10 +-
 user/user_test.go                             |    2 +-
 v2/appengine.go                               |    2 +-
 v2/blobstore/blobstore.go                     |    2 +-
 v2/blobstore/read.go                          |    2 +-
 v2/datastore/datastore.go                     |    2 +-
 v2/datastore/internal/cloudkey/cloudkey.go    |    2 +-
 v2/datastore/internal/cloudpb/entity.pb.go    |    2 +-
 v2/datastore/key.go                           |    2 +-
 v2/datastore/load.go                          |    2 +-
 v2/datastore/load_test.go                     |    2 +-
 v2/datastore/query.go                         |    2 +-
 v2/datastore/query_test.go                    |    2 +-
 v2/datastore/save.go                          |    2 +-
 v2/delay/delay_test.go                        |    2 +-
 xmpp/xmpp_test.go                             |    6 +-
 95 files changed, 26206 insertions(+), 16373 deletions(-)
 delete mode 100644 internal/app_identity/app_identity_service.pb.go

diff --git a/appengine.go b/appengine.go
index 35ba9c89..c906d1fc 100644
--- a/appengine.go
+++ b/appengine.go
@@ -12,7 +12,7 @@ import (
 	"context"
 	"net/http"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 )
diff --git a/blobstore/blobstore.go b/blobstore/blobstore.go
index f92a3da8..4aa5fa7e 100644
--- a/blobstore/blobstore.go
+++ b/blobstore/blobstore.go
@@ -23,8 +23,8 @@ import (
 	"strings"
 	"time"
 
-	"github.com/golang/protobuf/proto"
 	"golang.org/x/text/encoding/htmlindex"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/datastore"
diff --git a/blobstore/read.go b/blobstore/read.go
index 6fec0e72..2dcc0843 100644
--- a/blobstore/read.go
+++ b/blobstore/read.go
@@ -12,7 +12,7 @@ import (
 	"os"
 	"sync"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal"
diff --git a/datastore/datastore.go b/datastore/datastore.go
index 790fca77..76a25520 100644
--- a/datastore/datastore.go
+++ b/datastore/datastore.go
@@ -10,7 +10,7 @@ import (
 	"fmt"
 	"reflect"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal"
diff --git a/datastore/internal/cloudkey/cloudkey.go b/datastore/internal/cloudkey/cloudkey.go
index 643d4049..7fecaf89 100644
--- a/datastore/internal/cloudkey/cloudkey.go
+++ b/datastore/internal/cloudkey/cloudkey.go
@@ -12,8 +12,8 @@ import (
 	"errors"
 	"strings"
 
-	"github.com/golang/protobuf/proto"
 	cloudpb "google.golang.org/appengine/datastore/internal/cloudpb"
+	"google.golang.org/protobuf/proto"
 )
 
 /////////////////////////////////////////////////////////////////////
diff --git a/datastore/internal/cloudpb/entity.pb.go b/datastore/internal/cloudpb/entity.pb.go
index af8195f3..2350969f 100644
--- a/datastore/internal/cloudpb/entity.pb.go
+++ b/datastore/internal/cloudpb/entity.pb.go
@@ -10,7 +10,7 @@ package cloudpb
 import (
 	"fmt"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 )
 
 // A partition ID identifies a grouping of entities. The grouping is always
diff --git a/datastore/key.go b/datastore/key.go
index e312df51..9d5f0cae 100644
--- a/datastore/key.go
+++ b/datastore/key.go
@@ -14,7 +14,7 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 	pb "google.golang.org/appengine/internal/datastore"
diff --git a/datastore/load.go b/datastore/load.go
index 38a63653..537b2933 100644
--- a/datastore/load.go
+++ b/datastore/load.go
@@ -10,9 +10,9 @@ import (
 	"strings"
 	"time"
 
-	"github.com/golang/protobuf/proto"
 	"google.golang.org/appengine"
 	pb "google.golang.org/appengine/internal/datastore"
+	"google.golang.org/protobuf/proto"
 )
 
 var (
diff --git a/datastore/load_test.go b/datastore/load_test.go
index 46029bba..fb31211f 100644
--- a/datastore/load_test.go
+++ b/datastore/load_test.go
@@ -8,8 +8,8 @@ import (
 	"reflect"
 	"testing"
 
-	proto "github.com/golang/protobuf/proto"
 	pb "google.golang.org/appengine/internal/datastore"
+	proto "google.golang.org/protobuf/proto"
 )
 
 type Simple struct {
diff --git a/datastore/query.go b/datastore/query.go
index b1b80bf7..74b809bc 100644
--- a/datastore/query.go
+++ b/datastore/query.go
@@ -13,7 +13,7 @@ import (
 	"reflect"
 	"strings"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 	pb "google.golang.org/appengine/internal/datastore"
diff --git a/datastore/query_test.go b/datastore/query_test.go
index ab968238..f853fc11 100644
--- a/datastore/query_test.go
+++ b/datastore/query_test.go
@@ -11,7 +11,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 	"google.golang.org/appengine/internal/aetesting"
diff --git a/datastore/save.go b/datastore/save.go
index b9a2a8f0..80873558 100644
--- a/datastore/save.go
+++ b/datastore/save.go
@@ -11,7 +11,7 @@ import (
 	"reflect"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	pb "google.golang.org/appengine/internal/datastore"
diff --git a/delay/delay_test.go b/delay/delay_test.go
index 4c552b2c..6c202c3b 100644
--- a/delay/delay_test.go
+++ b/delay/delay_test.go
@@ -17,7 +17,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 	"google.golang.org/appengine/taskqueue"
diff --git a/go.mod b/go.mod
index f634d8d6..cea93dc6 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,6 @@ module google.golang.org/appengine
 go 1.11
 
 require (
-	github.com/golang/protobuf v1.5.2
 	golang.org/x/text v0.3.8
 	google.golang.org/protobuf v1.26.0
 )
diff --git a/go.sum b/go.sum
index 6cea1e9b..52d5d01a 100644
--- a/go.sum
+++ b/go.sum
@@ -1,6 +1,4 @@
 github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 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=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
diff --git a/identity.go b/identity.go
index 1202fc1a..1586944c 100644
--- a/identity.go
+++ b/identity.go
@@ -50,7 +50,7 @@ func ModuleHostname(c context.Context, module, version, instance string) (string
 	if err := internal.Call(c, "modules", "GetHostname", req, res); err != nil {
 		return "", err
 	}
-	return *res.Hostname, nil
+	return res.Hostname, nil
 }
 
 // VersionID returns the version ID for the current application.
diff --git a/image/image.go b/image/image.go
index c840135d..fa028325 100644
--- a/image/image.go
+++ b/image/image.go
@@ -29,7 +29,7 @@ type ServingURLOptions struct {
 // ServingURL returns a URL that will serve an image from Blobstore.
 func ServingURL(c context.Context, key appengine.BlobKey, opts *ServingURLOptions) (*url.URL, error) {
 	req := &pb.ImagesGetUrlBaseRequest{
-		BlobKey: (*string)(&key),
+		BlobKey: (string)(key),
 	}
 	if opts != nil && opts.Secure {
 		req.CreateSecureUrl = &opts.Secure
@@ -42,7 +42,7 @@ func ServingURL(c context.Context, key appengine.BlobKey, opts *ServingURLOption
 	// The URL may have suffixes added to dynamically resize or crop:
 	// - adding "=s32" will serve the image resized to 32 pixels, preserving the aspect ratio.
 	// - adding "=s32-c" is the same as "=s32" except it will be cropped.
-	u := *res.Url
+	u := res.Url
 	if opts != nil && opts.Size > 0 {
 		u += fmt.Sprintf("=s%d", opts.Size)
 		if opts.Crop {
diff --git a/internal/aetesting/fake.go b/internal/aetesting/fake.go
index dfdbe088..2dbc3ad1 100644
--- a/internal/aetesting/fake.go
+++ b/internal/aetesting/fake.go
@@ -13,7 +13,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 )
diff --git a/internal/api.go b/internal/api.go
index 0569f5dd..67e560b9 100644
--- a/internal/api.go
+++ b/internal/api.go
@@ -25,7 +25,7 @@ import (
 	"sync/atomic"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	basepb "google.golang.org/appengine/internal/base"
 	logpb "google.golang.org/appengine/internal/log"
@@ -469,8 +469,8 @@ func Call(ctx context.Context, service, method string, in, out proto.Message) er
 		}
 	}
 	req := &remotepb.Request{
-		ServiceName: &service,
-		Method:      &method,
+		ServiceName: service,
+		Method:      method,
 		Request:     data,
 		RequestId:   &ticket,
 	}
@@ -491,7 +491,7 @@ func Call(ctx context.Context, service, method string, in, out proto.Message) er
 	if res.RpcError != nil {
 		ce := &CallError{
 			Detail: res.RpcError.GetDetail(),
-			Code:   *res.RpcError.Code,
+			Code:   res.RpcError.Code,
 		}
 		switch remotepb.RpcError_ErrorCode(ce.Code) {
 		case remotepb.RpcError_CANCELLED, remotepb.RpcError_DEADLINE_EXCEEDED:
@@ -501,9 +501,9 @@ func Call(ctx context.Context, service, method string, in, out proto.Message) er
 	}
 	if res.ApplicationError != nil {
 		return &APIError{
-			Service: *req.ServiceName,
+			Service: req.ServiceName,
 			Detail:  res.ApplicationError.GetDetail(),
-			Code:    *res.ApplicationError.Code,
+			Code:    res.ApplicationError.Code,
 		}
 	}
 	if res.Exception != nil || res.JavaException != nil {
@@ -524,9 +524,10 @@ func (c *aeContext) addLogLine(ll *logpb.UserAppLogLine) {
 	// Truncate long log lines.
 	// TODO(dsymonds): Check if this is still necessary.
 	const lim = 8 << 10
-	if len(*ll.Message) > lim {
-		suffix := fmt.Sprintf("...(length %d)", len(*ll.Message))
-		ll.Message = proto.String((*ll.Message)[:lim-len(suffix)] + suffix)
+	if len(ll.Message) > lim {
+		suffix := fmt.Sprintf("...(length %d)", len(ll.Message))
+		value := (ll.Message)[:lim-len(suffix)] + suffix
+		ll.Message = *proto.String(value)
 	}
 
 	c.pendingLogs.Lock()
@@ -550,9 +551,9 @@ func logf(c *aeContext, level int64, format string, args ...interface{}) {
 	s = strings.TrimRight(s, "\n") // Remove any trailing newline characters.
 	if logToLogservice() {
 		c.addLogLine(&logpb.UserAppLogLine{
-			TimestampUsec: proto.Int64(time.Now().UnixNano() / 1e3),
-			Level:         &level,
-			Message:       &s,
+			TimestampUsec: time.Now().UnixNano() / 1e3,
+			Level:         level,
+			Message:       s,
 		})
 	}
 	// Log to stdout if not deployed
diff --git a/internal/api_classic.go b/internal/api_classic.go
index 87c33c79..3d1b6c48 100644
--- a/internal/api_classic.go
+++ b/internal/api_classic.go
@@ -18,7 +18,7 @@ import (
 	"appengine_internal"
 	basepb "appengine_internal/base"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 )
 
 var contextKey = "holds an appengine.Context"
diff --git a/internal/api_common.go b/internal/api_common.go
index 5b95c13d..43fced6d 100644
--- a/internal/api_common.go
+++ b/internal/api_common.go
@@ -9,7 +9,7 @@ import (
 	"errors"
 	"os"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 )
 
 type ctxKey string
diff --git a/internal/api_test.go b/internal/api_test.go
index 9692b29e..67e27b70 100644
--- a/internal/api_test.go
+++ b/internal/api_test.go
@@ -25,7 +25,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	basepb "google.golang.org/appengine/internal/base"
 	remotepb "google.golang.org/appengine/internal/remote_api"
@@ -73,7 +73,7 @@ func (f *fakeAPIHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	if *apiReq.RequestId != "s3cr3t" && !f.allowMissingTicket {
 		writeResponse(&remotepb.Response{
 			RpcError: &remotepb.RpcError{
-				Code:   proto.Int32(int32(remotepb.RpcError_SECURITY_VIOLATION)),
+				Code:   int32(remotepb.RpcError_SECURITY_VIOLATION),
 				Detail: proto.String("bad security ticket"),
 			},
 		})
@@ -82,14 +82,14 @@ func (f *fakeAPIHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	if got, want := r.Header.Get(dapperHeader), "trace-001"; got != want {
 		writeResponse(&remotepb.Response{
 			RpcError: &remotepb.RpcError{
-				Code:   proto.Int32(int32(remotepb.RpcError_BAD_REQUEST)),
+				Code:   int32(remotepb.RpcError_BAD_REQUEST),
 				Detail: proto.String(fmt.Sprintf("trace info = %q, want %q", got, want)),
 			},
 		})
 		return
 	}
 
-	service, method := *apiReq.ServiceName, *apiReq.Method
+	service, method := apiReq.ServiceName, apiReq.Method
 	var resOut proto.Message
 	if service == "actordb" && method == "LookupActor" {
 		req := &basepb.StringProto{}
@@ -98,8 +98,8 @@ func (f *fakeAPIHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 			http.Error(w, fmt.Sprintf("Bad encoded request: %v", err), 500)
 			return
 		}
-		if *req.Value == "Doctor Who" {
-			res.Value = proto.String("David Tennant")
+		if req.Value == "Doctor Who" {
+			res.Value = "David Tennant"
 		}
 		resOut = res
 	}
@@ -115,7 +115,7 @@ func (f *fakeAPIHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 		case "OverQuota":
 			writeResponse(&remotepb.Response{
 				RpcError: &remotepb.RpcError{
-					Code:   proto.Int32(int32(remotepb.RpcError_OVER_QUOTA)),
+					Code:   int32(remotepb.RpcError_OVER_QUOTA),
 					Detail: proto.String("you are hogging the resources!"),
 				},
 			})
@@ -187,14 +187,14 @@ func TestAPICall(t *testing.T) {
 	defer cleanup()
 
 	req := &basepb.StringProto{
-		Value: proto.String("Doctor Who"),
+		Value: "Doctor Who",
 	}
 	res := &basepb.StringProto{}
 	err := Call(toContext(c), "actordb", "LookupActor", req, res)
 	if err != nil {
 		t.Fatalf("API call failed: %v", err)
 	}
-	if got, want := *res.Value, "David Tennant"; got != want {
+	if got, want := res.Value, "David Tennant"; got != want {
 		t.Errorf("Response is %q, want %q", got, want)
 	}
 }
@@ -208,14 +208,14 @@ func TestAPICallTicketUnavailable(t *testing.T) {
 
 	c.req.Header.Set(ticketHeader, "")
 	req := &basepb.StringProto{
-		Value: proto.String("Doctor Who"),
+		Value: "Doctor Who",
 	}
 	res := &basepb.StringProto{}
 	err := Call(toContext(c), "actordb", "LookupActor", req, res)
 	if err != nil {
 		t.Fatalf("API call failed: %v", err)
 	}
-	if got, want := *res.Value, "David Tennant"; got != want {
+	if got, want := res.Value, "David Tennant"; got != want {
 		t.Errorf("Response is %q, want %q", got, want)
 	}
 }
@@ -453,7 +453,7 @@ func TestAPICallAllocations(t *testing.T) {
 	}
 
 	req := &basepb.StringProto{
-		Value: proto.String("Doctor Who"),
+		Value: "Doctor Who",
 	}
 	res := &basepb.StringProto{}
 	var apiErr error
diff --git a/internal/app_identity/app_identity_service.pb.go b/internal/app_identity/app_identity_service.pb.go
deleted file mode 100644
index 9a2ff77a..00000000
--- a/internal/app_identity/app_identity_service.pb.go
+++ /dev/null
@@ -1,611 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/app_identity/app_identity_service.proto
-
-package app_identity
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
-
-type AppIdentityServiceError_ErrorCode int32
-
-const (
-	AppIdentityServiceError_SUCCESS           AppIdentityServiceError_ErrorCode = 0
-	AppIdentityServiceError_UNKNOWN_SCOPE     AppIdentityServiceError_ErrorCode = 9
-	AppIdentityServiceError_BLOB_TOO_LARGE    AppIdentityServiceError_ErrorCode = 1000
-	AppIdentityServiceError_DEADLINE_EXCEEDED AppIdentityServiceError_ErrorCode = 1001
-	AppIdentityServiceError_NOT_A_VALID_APP   AppIdentityServiceError_ErrorCode = 1002
-	AppIdentityServiceError_UNKNOWN_ERROR     AppIdentityServiceError_ErrorCode = 1003
-	AppIdentityServiceError_NOT_ALLOWED       AppIdentityServiceError_ErrorCode = 1005
-	AppIdentityServiceError_NOT_IMPLEMENTED   AppIdentityServiceError_ErrorCode = 1006
-)
-
-var AppIdentityServiceError_ErrorCode_name = map[int32]string{
-	0:    "SUCCESS",
-	9:    "UNKNOWN_SCOPE",
-	1000: "BLOB_TOO_LARGE",
-	1001: "DEADLINE_EXCEEDED",
-	1002: "NOT_A_VALID_APP",
-	1003: "UNKNOWN_ERROR",
-	1005: "NOT_ALLOWED",
-	1006: "NOT_IMPLEMENTED",
-}
-var AppIdentityServiceError_ErrorCode_value = map[string]int32{
-	"SUCCESS":           0,
-	"UNKNOWN_SCOPE":     9,
-	"BLOB_TOO_LARGE":    1000,
-	"DEADLINE_EXCEEDED": 1001,
-	"NOT_A_VALID_APP":   1002,
-	"UNKNOWN_ERROR":     1003,
-	"NOT_ALLOWED":       1005,
-	"NOT_IMPLEMENTED":   1006,
-}
-
-func (x AppIdentityServiceError_ErrorCode) Enum() *AppIdentityServiceError_ErrorCode {
-	p := new(AppIdentityServiceError_ErrorCode)
-	*p = x
-	return p
-}
-func (x AppIdentityServiceError_ErrorCode) String() string {
-	return proto.EnumName(AppIdentityServiceError_ErrorCode_name, int32(x))
-}
-func (x *AppIdentityServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(AppIdentityServiceError_ErrorCode_value, data, "AppIdentityServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = AppIdentityServiceError_ErrorCode(value)
-	return nil
-}
-func (AppIdentityServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{0, 0}
-}
-
-type AppIdentityServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *AppIdentityServiceError) Reset()         { *m = AppIdentityServiceError{} }
-func (m *AppIdentityServiceError) String() string { return proto.CompactTextString(m) }
-func (*AppIdentityServiceError) ProtoMessage()    {}
-func (*AppIdentityServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{0}
-}
-func (m *AppIdentityServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AppIdentityServiceError.Unmarshal(m, b)
-}
-func (m *AppIdentityServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AppIdentityServiceError.Marshal(b, m, deterministic)
-}
-func (dst *AppIdentityServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AppIdentityServiceError.Merge(dst, src)
-}
-func (m *AppIdentityServiceError) XXX_Size() int {
-	return xxx_messageInfo_AppIdentityServiceError.Size(m)
-}
-func (m *AppIdentityServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_AppIdentityServiceError.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AppIdentityServiceError proto.InternalMessageInfo
-
-type SignForAppRequest struct {
-	BytesToSign          []byte   `protobuf:"bytes,1,opt,name=bytes_to_sign,json=bytesToSign" json:"bytes_to_sign,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SignForAppRequest) Reset()         { *m = SignForAppRequest{} }
-func (m *SignForAppRequest) String() string { return proto.CompactTextString(m) }
-func (*SignForAppRequest) ProtoMessage()    {}
-func (*SignForAppRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{1}
-}
-func (m *SignForAppRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SignForAppRequest.Unmarshal(m, b)
-}
-func (m *SignForAppRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SignForAppRequest.Marshal(b, m, deterministic)
-}
-func (dst *SignForAppRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SignForAppRequest.Merge(dst, src)
-}
-func (m *SignForAppRequest) XXX_Size() int {
-	return xxx_messageInfo_SignForAppRequest.Size(m)
-}
-func (m *SignForAppRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SignForAppRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SignForAppRequest proto.InternalMessageInfo
-
-func (m *SignForAppRequest) GetBytesToSign() []byte {
-	if m != nil {
-		return m.BytesToSign
-	}
-	return nil
-}
-
-type SignForAppResponse struct {
-	KeyName              *string  `protobuf:"bytes,1,opt,name=key_name,json=keyName" json:"key_name,omitempty"`
-	SignatureBytes       []byte   `protobuf:"bytes,2,opt,name=signature_bytes,json=signatureBytes" json:"signature_bytes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SignForAppResponse) Reset()         { *m = SignForAppResponse{} }
-func (m *SignForAppResponse) String() string { return proto.CompactTextString(m) }
-func (*SignForAppResponse) ProtoMessage()    {}
-func (*SignForAppResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{2}
-}
-func (m *SignForAppResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SignForAppResponse.Unmarshal(m, b)
-}
-func (m *SignForAppResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SignForAppResponse.Marshal(b, m, deterministic)
-}
-func (dst *SignForAppResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SignForAppResponse.Merge(dst, src)
-}
-func (m *SignForAppResponse) XXX_Size() int {
-	return xxx_messageInfo_SignForAppResponse.Size(m)
-}
-func (m *SignForAppResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SignForAppResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SignForAppResponse proto.InternalMessageInfo
-
-func (m *SignForAppResponse) GetKeyName() string {
-	if m != nil && m.KeyName != nil {
-		return *m.KeyName
-	}
-	return ""
-}
-
-func (m *SignForAppResponse) GetSignatureBytes() []byte {
-	if m != nil {
-		return m.SignatureBytes
-	}
-	return nil
-}
-
-type GetPublicCertificateForAppRequest struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetPublicCertificateForAppRequest) Reset()         { *m = GetPublicCertificateForAppRequest{} }
-func (m *GetPublicCertificateForAppRequest) String() string { return proto.CompactTextString(m) }
-func (*GetPublicCertificateForAppRequest) ProtoMessage()    {}
-func (*GetPublicCertificateForAppRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{3}
-}
-func (m *GetPublicCertificateForAppRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetPublicCertificateForAppRequest.Unmarshal(m, b)
-}
-func (m *GetPublicCertificateForAppRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetPublicCertificateForAppRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetPublicCertificateForAppRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetPublicCertificateForAppRequest.Merge(dst, src)
-}
-func (m *GetPublicCertificateForAppRequest) XXX_Size() int {
-	return xxx_messageInfo_GetPublicCertificateForAppRequest.Size(m)
-}
-func (m *GetPublicCertificateForAppRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetPublicCertificateForAppRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetPublicCertificateForAppRequest proto.InternalMessageInfo
-
-type PublicCertificate struct {
-	KeyName              *string  `protobuf:"bytes,1,opt,name=key_name,json=keyName" json:"key_name,omitempty"`
-	X509CertificatePem   *string  `protobuf:"bytes,2,opt,name=x509_certificate_pem,json=x509CertificatePem" json:"x509_certificate_pem,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *PublicCertificate) Reset()         { *m = PublicCertificate{} }
-func (m *PublicCertificate) String() string { return proto.CompactTextString(m) }
-func (*PublicCertificate) ProtoMessage()    {}
-func (*PublicCertificate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{4}
-}
-func (m *PublicCertificate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PublicCertificate.Unmarshal(m, b)
-}
-func (m *PublicCertificate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PublicCertificate.Marshal(b, m, deterministic)
-}
-func (dst *PublicCertificate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PublicCertificate.Merge(dst, src)
-}
-func (m *PublicCertificate) XXX_Size() int {
-	return xxx_messageInfo_PublicCertificate.Size(m)
-}
-func (m *PublicCertificate) XXX_DiscardUnknown() {
-	xxx_messageInfo_PublicCertificate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PublicCertificate proto.InternalMessageInfo
-
-func (m *PublicCertificate) GetKeyName() string {
-	if m != nil && m.KeyName != nil {
-		return *m.KeyName
-	}
-	return ""
-}
-
-func (m *PublicCertificate) GetX509CertificatePem() string {
-	if m != nil && m.X509CertificatePem != nil {
-		return *m.X509CertificatePem
-	}
-	return ""
-}
-
-type GetPublicCertificateForAppResponse struct {
-	PublicCertificateList      []*PublicCertificate `protobuf:"bytes,1,rep,name=public_certificate_list,json=publicCertificateList" json:"public_certificate_list,omitempty"`
-	MaxClientCacheTimeInSecond *int64               `protobuf:"varint,2,opt,name=max_client_cache_time_in_second,json=maxClientCacheTimeInSecond" json:"max_client_cache_time_in_second,omitempty"`
-	XXX_NoUnkeyedLiteral       struct{}             `json:"-"`
-	XXX_unrecognized           []byte               `json:"-"`
-	XXX_sizecache              int32                `json:"-"`
-}
-
-func (m *GetPublicCertificateForAppResponse) Reset()         { *m = GetPublicCertificateForAppResponse{} }
-func (m *GetPublicCertificateForAppResponse) String() string { return proto.CompactTextString(m) }
-func (*GetPublicCertificateForAppResponse) ProtoMessage()    {}
-func (*GetPublicCertificateForAppResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{5}
-}
-func (m *GetPublicCertificateForAppResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetPublicCertificateForAppResponse.Unmarshal(m, b)
-}
-func (m *GetPublicCertificateForAppResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetPublicCertificateForAppResponse.Marshal(b, m, deterministic)
-}
-func (dst *GetPublicCertificateForAppResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetPublicCertificateForAppResponse.Merge(dst, src)
-}
-func (m *GetPublicCertificateForAppResponse) XXX_Size() int {
-	return xxx_messageInfo_GetPublicCertificateForAppResponse.Size(m)
-}
-func (m *GetPublicCertificateForAppResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetPublicCertificateForAppResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetPublicCertificateForAppResponse proto.InternalMessageInfo
-
-func (m *GetPublicCertificateForAppResponse) GetPublicCertificateList() []*PublicCertificate {
-	if m != nil {
-		return m.PublicCertificateList
-	}
-	return nil
-}
-
-func (m *GetPublicCertificateForAppResponse) GetMaxClientCacheTimeInSecond() int64 {
-	if m != nil && m.MaxClientCacheTimeInSecond != nil {
-		return *m.MaxClientCacheTimeInSecond
-	}
-	return 0
-}
-
-type GetServiceAccountNameRequest struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetServiceAccountNameRequest) Reset()         { *m = GetServiceAccountNameRequest{} }
-func (m *GetServiceAccountNameRequest) String() string { return proto.CompactTextString(m) }
-func (*GetServiceAccountNameRequest) ProtoMessage()    {}
-func (*GetServiceAccountNameRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{6}
-}
-func (m *GetServiceAccountNameRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServiceAccountNameRequest.Unmarshal(m, b)
-}
-func (m *GetServiceAccountNameRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServiceAccountNameRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetServiceAccountNameRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServiceAccountNameRequest.Merge(dst, src)
-}
-func (m *GetServiceAccountNameRequest) XXX_Size() int {
-	return xxx_messageInfo_GetServiceAccountNameRequest.Size(m)
-}
-func (m *GetServiceAccountNameRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServiceAccountNameRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServiceAccountNameRequest proto.InternalMessageInfo
-
-type GetServiceAccountNameResponse struct {
-	ServiceAccountName   *string  `protobuf:"bytes,1,opt,name=service_account_name,json=serviceAccountName" json:"service_account_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetServiceAccountNameResponse) Reset()         { *m = GetServiceAccountNameResponse{} }
-func (m *GetServiceAccountNameResponse) String() string { return proto.CompactTextString(m) }
-func (*GetServiceAccountNameResponse) ProtoMessage()    {}
-func (*GetServiceAccountNameResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{7}
-}
-func (m *GetServiceAccountNameResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServiceAccountNameResponse.Unmarshal(m, b)
-}
-func (m *GetServiceAccountNameResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServiceAccountNameResponse.Marshal(b, m, deterministic)
-}
-func (dst *GetServiceAccountNameResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServiceAccountNameResponse.Merge(dst, src)
-}
-func (m *GetServiceAccountNameResponse) XXX_Size() int {
-	return xxx_messageInfo_GetServiceAccountNameResponse.Size(m)
-}
-func (m *GetServiceAccountNameResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServiceAccountNameResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServiceAccountNameResponse proto.InternalMessageInfo
-
-func (m *GetServiceAccountNameResponse) GetServiceAccountName() string {
-	if m != nil && m.ServiceAccountName != nil {
-		return *m.ServiceAccountName
-	}
-	return ""
-}
-
-type GetAccessTokenRequest struct {
-	Scope                []string `protobuf:"bytes,1,rep,name=scope" json:"scope,omitempty"`
-	ServiceAccountId     *int64   `protobuf:"varint,2,opt,name=service_account_id,json=serviceAccountId" json:"service_account_id,omitempty"`
-	ServiceAccountName   *string  `protobuf:"bytes,3,opt,name=service_account_name,json=serviceAccountName" json:"service_account_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetAccessTokenRequest) Reset()         { *m = GetAccessTokenRequest{} }
-func (m *GetAccessTokenRequest) String() string { return proto.CompactTextString(m) }
-func (*GetAccessTokenRequest) ProtoMessage()    {}
-func (*GetAccessTokenRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{8}
-}
-func (m *GetAccessTokenRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetAccessTokenRequest.Unmarshal(m, b)
-}
-func (m *GetAccessTokenRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetAccessTokenRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetAccessTokenRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetAccessTokenRequest.Merge(dst, src)
-}
-func (m *GetAccessTokenRequest) XXX_Size() int {
-	return xxx_messageInfo_GetAccessTokenRequest.Size(m)
-}
-func (m *GetAccessTokenRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetAccessTokenRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetAccessTokenRequest proto.InternalMessageInfo
-
-func (m *GetAccessTokenRequest) GetScope() []string {
-	if m != nil {
-		return m.Scope
-	}
-	return nil
-}
-
-func (m *GetAccessTokenRequest) GetServiceAccountId() int64 {
-	if m != nil && m.ServiceAccountId != nil {
-		return *m.ServiceAccountId
-	}
-	return 0
-}
-
-func (m *GetAccessTokenRequest) GetServiceAccountName() string {
-	if m != nil && m.ServiceAccountName != nil {
-		return *m.ServiceAccountName
-	}
-	return ""
-}
-
-type GetAccessTokenResponse struct {
-	AccessToken          *string  `protobuf:"bytes,1,opt,name=access_token,json=accessToken" json:"access_token,omitempty"`
-	ExpirationTime       *int64   `protobuf:"varint,2,opt,name=expiration_time,json=expirationTime" json:"expiration_time,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetAccessTokenResponse) Reset()         { *m = GetAccessTokenResponse{} }
-func (m *GetAccessTokenResponse) String() string { return proto.CompactTextString(m) }
-func (*GetAccessTokenResponse) ProtoMessage()    {}
-func (*GetAccessTokenResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{9}
-}
-func (m *GetAccessTokenResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetAccessTokenResponse.Unmarshal(m, b)
-}
-func (m *GetAccessTokenResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetAccessTokenResponse.Marshal(b, m, deterministic)
-}
-func (dst *GetAccessTokenResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetAccessTokenResponse.Merge(dst, src)
-}
-func (m *GetAccessTokenResponse) XXX_Size() int {
-	return xxx_messageInfo_GetAccessTokenResponse.Size(m)
-}
-func (m *GetAccessTokenResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetAccessTokenResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetAccessTokenResponse proto.InternalMessageInfo
-
-func (m *GetAccessTokenResponse) GetAccessToken() string {
-	if m != nil && m.AccessToken != nil {
-		return *m.AccessToken
-	}
-	return ""
-}
-
-func (m *GetAccessTokenResponse) GetExpirationTime() int64 {
-	if m != nil && m.ExpirationTime != nil {
-		return *m.ExpirationTime
-	}
-	return 0
-}
-
-type GetDefaultGcsBucketNameRequest struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetDefaultGcsBucketNameRequest) Reset()         { *m = GetDefaultGcsBucketNameRequest{} }
-func (m *GetDefaultGcsBucketNameRequest) String() string { return proto.CompactTextString(m) }
-func (*GetDefaultGcsBucketNameRequest) ProtoMessage()    {}
-func (*GetDefaultGcsBucketNameRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{10}
-}
-func (m *GetDefaultGcsBucketNameRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetDefaultGcsBucketNameRequest.Unmarshal(m, b)
-}
-func (m *GetDefaultGcsBucketNameRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetDefaultGcsBucketNameRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetDefaultGcsBucketNameRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetDefaultGcsBucketNameRequest.Merge(dst, src)
-}
-func (m *GetDefaultGcsBucketNameRequest) XXX_Size() int {
-	return xxx_messageInfo_GetDefaultGcsBucketNameRequest.Size(m)
-}
-func (m *GetDefaultGcsBucketNameRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetDefaultGcsBucketNameRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetDefaultGcsBucketNameRequest proto.InternalMessageInfo
-
-type GetDefaultGcsBucketNameResponse struct {
-	DefaultGcsBucketName *string  `protobuf:"bytes,1,opt,name=default_gcs_bucket_name,json=defaultGcsBucketName" json:"default_gcs_bucket_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetDefaultGcsBucketNameResponse) Reset()         { *m = GetDefaultGcsBucketNameResponse{} }
-func (m *GetDefaultGcsBucketNameResponse) String() string { return proto.CompactTextString(m) }
-func (*GetDefaultGcsBucketNameResponse) ProtoMessage()    {}
-func (*GetDefaultGcsBucketNameResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_app_identity_service_08a6e3f74b04cfa4, []int{11}
-}
-func (m *GetDefaultGcsBucketNameResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetDefaultGcsBucketNameResponse.Unmarshal(m, b)
-}
-func (m *GetDefaultGcsBucketNameResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetDefaultGcsBucketNameResponse.Marshal(b, m, deterministic)
-}
-func (dst *GetDefaultGcsBucketNameResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetDefaultGcsBucketNameResponse.Merge(dst, src)
-}
-func (m *GetDefaultGcsBucketNameResponse) XXX_Size() int {
-	return xxx_messageInfo_GetDefaultGcsBucketNameResponse.Size(m)
-}
-func (m *GetDefaultGcsBucketNameResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetDefaultGcsBucketNameResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetDefaultGcsBucketNameResponse proto.InternalMessageInfo
-
-func (m *GetDefaultGcsBucketNameResponse) GetDefaultGcsBucketName() string {
-	if m != nil && m.DefaultGcsBucketName != nil {
-		return *m.DefaultGcsBucketName
-	}
-	return ""
-}
-
-func init() {
-	proto.RegisterType((*AppIdentityServiceError)(nil), "appengine.AppIdentityServiceError")
-	proto.RegisterType((*SignForAppRequest)(nil), "appengine.SignForAppRequest")
-	proto.RegisterType((*SignForAppResponse)(nil), "appengine.SignForAppResponse")
-	proto.RegisterType((*GetPublicCertificateForAppRequest)(nil), "appengine.GetPublicCertificateForAppRequest")
-	proto.RegisterType((*PublicCertificate)(nil), "appengine.PublicCertificate")
-	proto.RegisterType((*GetPublicCertificateForAppResponse)(nil), "appengine.GetPublicCertificateForAppResponse")
-	proto.RegisterType((*GetServiceAccountNameRequest)(nil), "appengine.GetServiceAccountNameRequest")
-	proto.RegisterType((*GetServiceAccountNameResponse)(nil), "appengine.GetServiceAccountNameResponse")
-	proto.RegisterType((*GetAccessTokenRequest)(nil), "appengine.GetAccessTokenRequest")
-	proto.RegisterType((*GetAccessTokenResponse)(nil), "appengine.GetAccessTokenResponse")
-	proto.RegisterType((*GetDefaultGcsBucketNameRequest)(nil), "appengine.GetDefaultGcsBucketNameRequest")
-	proto.RegisterType((*GetDefaultGcsBucketNameResponse)(nil), "appengine.GetDefaultGcsBucketNameResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/app_identity/app_identity_service.proto", fileDescriptor_app_identity_service_08a6e3f74b04cfa4)
-}
-
-var fileDescriptor_app_identity_service_08a6e3f74b04cfa4 = []byte{
-	// 676 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xdb, 0x6e, 0xda, 0x58,
-	0x14, 0x1d, 0x26, 0x1a, 0x31, 0x6c, 0x12, 0x62, 0xce, 0x90, 0xcb, 0x8c, 0x32, 0xb9, 0x78, 0x1e,
-	0x26, 0x0f, 0x15, 0x89, 0x2a, 0x45, 0x55, 0x1f, 0x8d, 0xed, 0x22, 0x54, 0x07, 0x53, 0x43, 0x9a,
-	0xa8, 0x2f, 0xa7, 0xce, 0x61, 0xc7, 0x3d, 0x02, 0x9f, 0xe3, 0xda, 0x87, 0x0a, 0x3e, 0xa2, 0x3f,
-	0xd2, 0x9f, 0xe8, 0x5b, 0xbf, 0xa5, 0x17, 0xb5, 0xdf, 0x50, 0xd9, 0x38, 0x5c, 0x92, 0x92, 0x37,
-	0xbc, 0xf6, 0x5a, 0xcb, 0x6b, 0x2f, 0x6d, 0x0c, 0x4e, 0x20, 0x65, 0x30, 0xc4, 0x7a, 0x20, 0x87,
-	0xbe, 0x08, 0xea, 0x32, 0x0e, 0x4e, 0xfc, 0x28, 0x42, 0x11, 0x70, 0x81, 0x27, 0x5c, 0x28, 0x8c,
-	0x85, 0x3f, 0x4c, 0x21, 0xca, 0xfb, 0x28, 0x14, 0x57, 0x93, 0xa5, 0x07, 0x9a, 0x60, 0xfc, 0x8e,
-	0x33, 0xac, 0x47, 0xb1, 0x54, 0x92, 0x94, 0x66, 0x5a, 0xfd, 0x53, 0x01, 0x76, 0x8c, 0x28, 0x6a,
-	0xe5, 0xc4, 0xee, 0x94, 0x67, 0xc7, 0xb1, 0x8c, 0xf5, 0x0f, 0x05, 0x28, 0x65, 0xbf, 0x4c, 0xd9,
-	0x47, 0x52, 0x86, 0x62, 0xf7, 0xc2, 0x34, 0xed, 0x6e, 0x57, 0xfb, 0x8d, 0x54, 0x61, 0xe3, 0xa2,
-	0xfd, 0xbc, 0xed, 0x5e, 0xb6, 0x69, 0xd7, 0x74, 0x3b, 0xb6, 0x56, 0x22, 0x7f, 0x41, 0xa5, 0xe1,
-	0xb8, 0x0d, 0xda, 0x73, 0x5d, 0xea, 0x18, 0x5e, 0xd3, 0xd6, 0x3e, 0x17, 0xc9, 0x36, 0x54, 0x2d,
-	0xdb, 0xb0, 0x9c, 0x56, 0xdb, 0xa6, 0xf6, 0x95, 0x69, 0xdb, 0x96, 0x6d, 0x69, 0x5f, 0x8a, 0xa4,
-	0x06, 0x9b, 0x6d, 0xb7, 0x47, 0x0d, 0xfa, 0xd2, 0x70, 0x5a, 0x16, 0x35, 0x3a, 0x1d, 0xed, 0x6b,
-	0x91, 0x90, 0xb9, 0xab, 0xed, 0x79, 0xae, 0xa7, 0x7d, 0x2b, 0x12, 0x0d, 0xca, 0x19, 0xd3, 0x71,
-	0xdc, 0x4b, 0xdb, 0xd2, 0xbe, 0xcf, 0xb4, 0xad, 0xf3, 0x8e, 0x63, 0x9f, 0xdb, 0xed, 0x9e, 0x6d,
-	0x69, 0x3f, 0x8a, 0xfa, 0x13, 0xa8, 0x76, 0x79, 0x20, 0x9e, 0xc9, 0xd8, 0x88, 0x22, 0x0f, 0xdf,
-	0x8e, 0x30, 0x51, 0x44, 0x87, 0x8d, 0xeb, 0x89, 0xc2, 0x84, 0x2a, 0x49, 0x13, 0x1e, 0x88, 0xdd,
-	0xc2, 0x61, 0xe1, 0x78, 0xdd, 0x2b, 0x67, 0x60, 0x4f, 0xa6, 0x02, 0xfd, 0x0a, 0xc8, 0xa2, 0x30,
-	0x89, 0xa4, 0x48, 0x90, 0xfc, 0x0d, 0x7f, 0x0e, 0x70, 0x42, 0x85, 0x1f, 0x62, 0x26, 0x2a, 0x79,
-	0xc5, 0x01, 0x4e, 0xda, 0x7e, 0x88, 0xe4, 0x7f, 0xd8, 0x4c, 0xbd, 0x7c, 0x35, 0x8a, 0x91, 0x66,
-	0x4e, 0xbb, 0xbf, 0x67, 0xb6, 0x95, 0x19, 0xdc, 0x48, 0x51, 0xfd, 0x3f, 0x38, 0x6a, 0xa2, 0xea,
-	0x8c, 0xae, 0x87, 0x9c, 0x99, 0x18, 0x2b, 0x7e, 0xc3, 0x99, 0xaf, 0x70, 0x29, 0xa2, 0xfe, 0x1a,
-	0xaa, 0xf7, 0x18, 0x0f, 0xbd, 0xfd, 0x14, 0x6a, 0xe3, 0xb3, 0xd3, 0xa7, 0x94, 0xcd, 0xe9, 0x34,
-	0xc2, 0x30, 0x8b, 0x50, 0xf2, 0x48, 0x3a, 0x5b, 0x70, 0xea, 0x60, 0xa8, 0x7f, 0x2c, 0x80, 0xfe,
-	0x50, 0x8e, 0x7c, 0xe3, 0x1e, 0xec, 0x44, 0x19, 0x65, 0xc9, 0x7a, 0xc8, 0x13, 0xb5, 0x5b, 0x38,
-	0x5c, 0x3b, 0x2e, 0x3f, 0xde, 0xab, 0xcf, 0xce, 0xa6, 0x7e, 0xcf, 0xcc, 0xdb, 0x8a, 0xee, 0x42,
-	0x0e, 0x4f, 0x14, 0x31, 0xe1, 0x20, 0xf4, 0xc7, 0x94, 0x0d, 0x39, 0x0a, 0x45, 0x99, 0xcf, 0xde,
-	0x20, 0x55, 0x3c, 0x44, 0xca, 0x05, 0x4d, 0x90, 0x49, 0xd1, 0xcf, 0x92, 0xaf, 0x79, 0xff, 0x84,
-	0xfe, 0xd8, 0xcc, 0x58, 0x66, 0x4a, 0xea, 0xf1, 0x10, 0x5b, 0xa2, 0x9b, 0x31, 0xf4, 0x7d, 0xd8,
-	0x6b, 0xa2, 0xca, 0x6f, 0xd3, 0x60, 0x4c, 0x8e, 0x84, 0x4a, 0xcb, 0xb8, 0xed, 0xf0, 0x05, 0xfc,
-	0xbb, 0x62, 0x9e, 0xef, 0x76, 0x0a, 0xb5, 0xfc, 0x1f, 0x40, 0xfd, 0xe9, 0x78, 0xb1, 0x5b, 0x92,
-	0xdc, 0x53, 0xea, 0xef, 0x0b, 0xb0, 0xd5, 0x44, 0x65, 0x30, 0x86, 0x49, 0xd2, 0x93, 0x03, 0x14,
-	0xb7, 0x37, 0x55, 0x83, 0x3f, 0x12, 0x26, 0x23, 0xcc, 0x5a, 0x29, 0x79, 0xd3, 0x07, 0xf2, 0x08,
-	0xc8, 0xdd, 0x37, 0xf0, 0xdb, 0xd5, 0xb4, 0x65, 0xff, 0x56, 0x7f, 0x65, 0x9e, 0xb5, 0x95, 0x79,
-	0xfa, 0xb0, 0x7d, 0x37, 0x4e, 0xbe, 0xdb, 0x11, 0xac, 0xfb, 0x19, 0x4c, 0x55, 0x8a, 0xe7, 0x3b,
-	0x95, 0xfd, 0x39, 0x35, 0xbd, 0x58, 0x1c, 0x47, 0x3c, 0xf6, 0x15, 0x97, 0x22, 0xab, 0x3f, 0x4f,
-	0x56, 0x99, 0xc3, 0x69, 0xe1, 0xfa, 0x21, 0xec, 0x37, 0x51, 0x59, 0x78, 0xe3, 0x8f, 0x86, 0xaa,
-	0xc9, 0x92, 0xc6, 0x88, 0x0d, 0x70, 0xa9, 0xea, 0x2b, 0x38, 0x58, 0xc9, 0xc8, 0x03, 0x9d, 0xc1,
-	0x4e, 0x7f, 0x3a, 0xa7, 0x01, 0x4b, 0xe8, 0x75, 0xc6, 0x58, 0xec, 0xbb, 0xd6, 0xff, 0x85, 0xbc,
-	0x51, 0x79, 0xb5, 0xbe, 0xf8, 0xc9, 0xfa, 0x19, 0x00, 0x00, 0xff, 0xff, 0x37, 0x4c, 0x56, 0x38,
-	0xf3, 0x04, 0x00, 0x00,
-}
diff --git a/internal/app_identity/app_identity_service.proto b/internal/app_identity/app_identity_service.proto
index 19610ca5..5ca27ab9 100644
--- a/internal/app_identity/app_identity_service.proto
+++ b/internal/app_identity/app_identity_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "app_identity";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/app_identity";
 
 package appengine;
 
diff --git a/internal/base/api_base.pb.go b/internal/base/api_base.pb.go
index db4777e6..868c203d 100644
--- a/internal/base/api_base.pb.go
+++ b/internal/base/api_base.pb.go
@@ -1,308 +1,510 @@
+// Built-in base types for API calls. Primarily useful as return types.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/base/api_base.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: api_base.proto
 
 package base
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 StringProto struct {
-	Value                *string  `protobuf:"bytes,1,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *StringProto) Reset()         { *m = StringProto{} }
-func (m *StringProto) String() string { return proto.CompactTextString(m) }
-func (*StringProto) ProtoMessage()    {}
-func (*StringProto) Descriptor() ([]byte, []int) {
-	return fileDescriptor_api_base_9d49f8792e0c1140, []int{0}
-}
-func (m *StringProto) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StringProto.Unmarshal(m, b)
-}
-func (m *StringProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StringProto.Marshal(b, m, deterministic)
+	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (dst *StringProto) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StringProto.Merge(dst, src)
+
+func (x *StringProto) Reset() {
+	*x = StringProto{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_base_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *StringProto) XXX_Size() int {
-	return xxx_messageInfo_StringProto.Size(m)
+
+func (x *StringProto) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *StringProto) XXX_DiscardUnknown() {
-	xxx_messageInfo_StringProto.DiscardUnknown(m)
+
+func (*StringProto) ProtoMessage() {}
+
+func (x *StringProto) ProtoReflect() protoreflect.Message {
+	mi := &file_api_base_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)
 }
 
-var xxx_messageInfo_StringProto proto.InternalMessageInfo
+// Deprecated: Use StringProto.ProtoReflect.Descriptor instead.
+func (*StringProto) Descriptor() ([]byte, []int) {
+	return file_api_base_proto_rawDescGZIP(), []int{0}
+}
 
-func (m *StringProto) GetValue() string {
-	if m != nil && m.Value != nil {
-		return *m.Value
+func (x *StringProto) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
 type Integer32Proto struct {
-	Value                *int32   `protobuf:"varint,1,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Integer32Proto) Reset()         { *m = Integer32Proto{} }
-func (m *Integer32Proto) String() string { return proto.CompactTextString(m) }
-func (*Integer32Proto) ProtoMessage()    {}
-func (*Integer32Proto) Descriptor() ([]byte, []int) {
-	return fileDescriptor_api_base_9d49f8792e0c1140, []int{1}
-}
-func (m *Integer32Proto) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Integer32Proto.Unmarshal(m, b)
+	Value int32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (m *Integer32Proto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Integer32Proto.Marshal(b, m, deterministic)
-}
-func (dst *Integer32Proto) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Integer32Proto.Merge(dst, src)
+
+func (x *Integer32Proto) Reset() {
+	*x = Integer32Proto{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_base_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Integer32Proto) XXX_Size() int {
-	return xxx_messageInfo_Integer32Proto.Size(m)
+
+func (x *Integer32Proto) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Integer32Proto) XXX_DiscardUnknown() {
-	xxx_messageInfo_Integer32Proto.DiscardUnknown(m)
+
+func (*Integer32Proto) ProtoMessage() {}
+
+func (x *Integer32Proto) ProtoReflect() protoreflect.Message {
+	mi := &file_api_base_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)
 }
 
-var xxx_messageInfo_Integer32Proto proto.InternalMessageInfo
+// Deprecated: Use Integer32Proto.ProtoReflect.Descriptor instead.
+func (*Integer32Proto) Descriptor() ([]byte, []int) {
+	return file_api_base_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *Integer32Proto) GetValue() int32 {
-	if m != nil && m.Value != nil {
-		return *m.Value
+func (x *Integer32Proto) GetValue() int32 {
+	if x != nil {
+		return x.Value
 	}
 	return 0
 }
 
 type Integer64Proto struct {
-	Value                *int64   `protobuf:"varint,1,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Integer64Proto) Reset()         { *m = Integer64Proto{} }
-func (m *Integer64Proto) String() string { return proto.CompactTextString(m) }
-func (*Integer64Proto) ProtoMessage()    {}
-func (*Integer64Proto) Descriptor() ([]byte, []int) {
-	return fileDescriptor_api_base_9d49f8792e0c1140, []int{2}
+	Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (m *Integer64Proto) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Integer64Proto.Unmarshal(m, b)
-}
-func (m *Integer64Proto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Integer64Proto.Marshal(b, m, deterministic)
-}
-func (dst *Integer64Proto) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Integer64Proto.Merge(dst, src)
+
+func (x *Integer64Proto) Reset() {
+	*x = Integer64Proto{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_base_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Integer64Proto) XXX_Size() int {
-	return xxx_messageInfo_Integer64Proto.Size(m)
+
+func (x *Integer64Proto) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Integer64Proto) XXX_DiscardUnknown() {
-	xxx_messageInfo_Integer64Proto.DiscardUnknown(m)
+
+func (*Integer64Proto) ProtoMessage() {}
+
+func (x *Integer64Proto) ProtoReflect() protoreflect.Message {
+	mi := &file_api_base_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)
 }
 
-var xxx_messageInfo_Integer64Proto proto.InternalMessageInfo
+// Deprecated: Use Integer64Proto.ProtoReflect.Descriptor instead.
+func (*Integer64Proto) Descriptor() ([]byte, []int) {
+	return file_api_base_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *Integer64Proto) GetValue() int64 {
-	if m != nil && m.Value != nil {
-		return *m.Value
+func (x *Integer64Proto) GetValue() int64 {
+	if x != nil {
+		return x.Value
 	}
 	return 0
 }
 
 type BoolProto struct {
-	Value                *bool    `protobuf:"varint,1,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *BoolProto) Reset()         { *m = BoolProto{} }
-func (m *BoolProto) String() string { return proto.CompactTextString(m) }
-func (*BoolProto) ProtoMessage()    {}
-func (*BoolProto) Descriptor() ([]byte, []int) {
-	return fileDescriptor_api_base_9d49f8792e0c1140, []int{3}
-}
-func (m *BoolProto) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BoolProto.Unmarshal(m, b)
-}
-func (m *BoolProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BoolProto.Marshal(b, m, deterministic)
+	Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (dst *BoolProto) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BoolProto.Merge(dst, src)
+
+func (x *BoolProto) Reset() {
+	*x = BoolProto{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_base_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *BoolProto) XXX_Size() int {
-	return xxx_messageInfo_BoolProto.Size(m)
+
+func (x *BoolProto) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *BoolProto) XXX_DiscardUnknown() {
-	xxx_messageInfo_BoolProto.DiscardUnknown(m)
+
+func (*BoolProto) ProtoMessage() {}
+
+func (x *BoolProto) ProtoReflect() protoreflect.Message {
+	mi := &file_api_base_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)
 }
 
-var xxx_messageInfo_BoolProto proto.InternalMessageInfo
+// Deprecated: Use BoolProto.ProtoReflect.Descriptor instead.
+func (*BoolProto) Descriptor() ([]byte, []int) {
+	return file_api_base_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *BoolProto) GetValue() bool {
-	if m != nil && m.Value != nil {
-		return *m.Value
+func (x *BoolProto) GetValue() bool {
+	if x != nil {
+		return x.Value
 	}
 	return false
 }
 
 type DoubleProto struct {
-	Value                *float64 `protobuf:"fixed64,1,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DoubleProto) Reset()         { *m = DoubleProto{} }
-func (m *DoubleProto) String() string { return proto.CompactTextString(m) }
-func (*DoubleProto) ProtoMessage()    {}
-func (*DoubleProto) Descriptor() ([]byte, []int) {
-	return fileDescriptor_api_base_9d49f8792e0c1140, []int{4}
-}
-func (m *DoubleProto) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DoubleProto.Unmarshal(m, b)
+	Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (m *DoubleProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DoubleProto.Marshal(b, m, deterministic)
-}
-func (dst *DoubleProto) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DoubleProto.Merge(dst, src)
+
+func (x *DoubleProto) Reset() {
+	*x = DoubleProto{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_base_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DoubleProto) XXX_Size() int {
-	return xxx_messageInfo_DoubleProto.Size(m)
+
+func (x *DoubleProto) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DoubleProto) XXX_DiscardUnknown() {
-	xxx_messageInfo_DoubleProto.DiscardUnknown(m)
+
+func (*DoubleProto) ProtoMessage() {}
+
+func (x *DoubleProto) ProtoReflect() protoreflect.Message {
+	mi := &file_api_base_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)
 }
 
-var xxx_messageInfo_DoubleProto proto.InternalMessageInfo
+// Deprecated: Use DoubleProto.ProtoReflect.Descriptor instead.
+func (*DoubleProto) Descriptor() ([]byte, []int) {
+	return file_api_base_proto_rawDescGZIP(), []int{4}
+}
 
-func (m *DoubleProto) GetValue() float64 {
-	if m != nil && m.Value != nil {
-		return *m.Value
+func (x *DoubleProto) GetValue() float64 {
+	if x != nil {
+		return x.Value
 	}
 	return 0
 }
 
 type BytesProto struct {
-	Value                []byte   `protobuf:"bytes,1,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *BytesProto) Reset()         { *m = BytesProto{} }
-func (m *BytesProto) String() string { return proto.CompactTextString(m) }
-func (*BytesProto) ProtoMessage()    {}
-func (*BytesProto) Descriptor() ([]byte, []int) {
-	return fileDescriptor_api_base_9d49f8792e0c1140, []int{5}
-}
-func (m *BytesProto) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BytesProto.Unmarshal(m, b)
-}
-func (m *BytesProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BytesProto.Marshal(b, m, deterministic)
+	Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (dst *BytesProto) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BytesProto.Merge(dst, src)
+
+func (x *BytesProto) Reset() {
+	*x = BytesProto{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_base_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *BytesProto) XXX_Size() int {
-	return xxx_messageInfo_BytesProto.Size(m)
+
+func (x *BytesProto) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *BytesProto) XXX_DiscardUnknown() {
-	xxx_messageInfo_BytesProto.DiscardUnknown(m)
+
+func (*BytesProto) ProtoMessage() {}
+
+func (x *BytesProto) ProtoReflect() protoreflect.Message {
+	mi := &file_api_base_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)
 }
 
-var xxx_messageInfo_BytesProto proto.InternalMessageInfo
+// Deprecated: Use BytesProto.ProtoReflect.Descriptor instead.
+func (*BytesProto) Descriptor() ([]byte, []int) {
+	return file_api_base_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *BytesProto) GetValue() []byte {
-	if m != nil {
-		return m.Value
+func (x *BytesProto) GetValue() []byte {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
 type VoidProto struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *VoidProto) Reset()         { *m = VoidProto{} }
-func (m *VoidProto) String() string { return proto.CompactTextString(m) }
-func (*VoidProto) ProtoMessage()    {}
-func (*VoidProto) Descriptor() ([]byte, []int) {
-	return fileDescriptor_api_base_9d49f8792e0c1140, []int{6}
-}
-func (m *VoidProto) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoidProto.Unmarshal(m, b)
-}
-func (m *VoidProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoidProto.Marshal(b, m, deterministic)
-}
-func (dst *VoidProto) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoidProto.Merge(dst, src)
-}
-func (m *VoidProto) XXX_Size() int {
-	return xxx_messageInfo_VoidProto.Size(m)
-}
-func (m *VoidProto) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoidProto.DiscardUnknown(m)
+func (x *VoidProto) Reset() {
+	*x = VoidProto{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_base_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-var xxx_messageInfo_VoidProto proto.InternalMessageInfo
-
-func init() {
-	proto.RegisterType((*StringProto)(nil), "appengine.base.StringProto")
-	proto.RegisterType((*Integer32Proto)(nil), "appengine.base.Integer32Proto")
-	proto.RegisterType((*Integer64Proto)(nil), "appengine.base.Integer64Proto")
-	proto.RegisterType((*BoolProto)(nil), "appengine.base.BoolProto")
-	proto.RegisterType((*DoubleProto)(nil), "appengine.base.DoubleProto")
-	proto.RegisterType((*BytesProto)(nil), "appengine.base.BytesProto")
-	proto.RegisterType((*VoidProto)(nil), "appengine.base.VoidProto")
+func (x *VoidProto) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/base/api_base.proto", fileDescriptor_api_base_9d49f8792e0c1140)
+func (*VoidProto) ProtoMessage() {}
+
+func (x *VoidProto) ProtoReflect() protoreflect.Message {
+	mi := &file_api_base_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)
 }
 
-var fileDescriptor_api_base_9d49f8792e0c1140 = []byte{
-	// 199 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0xcf, 0x3f, 0x4b, 0xc6, 0x30,
-	0x10, 0x06, 0x70, 0x5a, 0xad, 0xb4, 0x57, 0xe9, 0x20, 0x0e, 0x1d, 0xb5, 0x05, 0x71, 0x4a, 0x40,
-	0x45, 0x9c, 0x83, 0x8b, 0x9b, 0x28, 0x38, 0xb8, 0x48, 0x8a, 0xc7, 0x11, 0x08, 0xb9, 0x90, 0xa6,
-	0x82, 0xdf, 0x5e, 0xda, 0xd2, 0xfa, 0xc2, 0x9b, 0xed, 0xfe, 0xfc, 0xe0, 0xe1, 0x81, 0x27, 0x62,
-	0x26, 0x8b, 0x82, 0xd8, 0x6a, 0x47, 0x82, 0x03, 0x49, 0xed, 0x3d, 0x3a, 0x32, 0x0e, 0xa5, 0x71,
-	0x11, 0x83, 0xd3, 0x56, 0x0e, 0x7a, 0x44, 0xa9, 0xbd, 0xf9, 0x9a, 0x07, 0xe1, 0x03, 0x47, 0xbe,
-	0x68, 0x76, 0x27, 0xe6, 0x6b, 0xd7, 0x43, 0xfd, 0x1e, 0x83, 0x71, 0xf4, 0xba, 0xbc, 0x2f, 0xa1,
-	0xf8, 0xd1, 0x76, 0xc2, 0x36, 0xbb, 0xca, 0x6f, 0xab, 0xb7, 0x75, 0xe9, 0x6e, 0xa0, 0x79, 0x71,
-	0x11, 0x09, 0xc3, 0xfd, 0x5d, 0xc2, 0x15, 0xc7, 0xee, 0xf1, 0x21, 0xe1, 0x4e, 0x36, 0x77, 0x0d,
-	0x95, 0x62, 0xb6, 0x09, 0x52, 0x6e, 0xa4, 0x87, 0xfa, 0x99, 0xa7, 0xc1, 0x62, 0x02, 0x65, 0xff,
-	0x79, 0xa0, 0x7e, 0x23, 0x8e, 0xab, 0x69, 0x0f, 0xcd, 0xb9, 0xca, 0xcb, 0xdd, 0xd5, 0x50, 0x7d,
-	0xb0, 0xf9, 0x5e, 0x98, 0x3a, 0xfb, 0x3c, 0x9d, 0x9b, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xba,
-	0x37, 0x25, 0xea, 0x44, 0x01, 0x00, 0x00,
+// Deprecated: Use VoidProto.ProtoReflect.Descriptor instead.
+func (*VoidProto) Descriptor() ([]byte, []int) {
+	return file_api_base_proto_rawDescGZIP(), []int{6}
+}
+
+var File_api_base_proto protoreflect.FileDescriptor
+
+var file_api_base_proto_rawDesc = []byte{
+	0x0a, 0x0e, 0x61, 0x70, 0x69, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x12, 0x0e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x62, 0x61, 0x73, 0x65,
+	0x22, 0x23, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72,
+	0x33, 0x32, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x0a,
+	0x0e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x36, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x21, 0x0a, 0x09, 0x42, 0x6f, 0x6f, 0x6c, 0x50, 0x72, 0x6f,
+	0x74, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x0b, 0x44, 0x6f, 0x75, 0x62,
+	0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x0a,
+	0x0a, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x08, 0x01, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x0b, 0x0a, 0x09, 0x56, 0x6f, 0x69, 0x64, 0x50, 0x72, 0x6f,
+	0x74, 0x6f, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
+	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x62,
+	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_api_base_proto_rawDescOnce sync.Once
+	file_api_base_proto_rawDescData = file_api_base_proto_rawDesc
+)
+
+func file_api_base_proto_rawDescGZIP() []byte {
+	file_api_base_proto_rawDescOnce.Do(func() {
+		file_api_base_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_base_proto_rawDescData)
+	})
+	return file_api_base_proto_rawDescData
+}
+
+var file_api_base_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
+var file_api_base_proto_goTypes = []interface{}{
+	(*StringProto)(nil),    // 0: appengine.base.StringProto
+	(*Integer32Proto)(nil), // 1: appengine.base.Integer32Proto
+	(*Integer64Proto)(nil), // 2: appengine.base.Integer64Proto
+	(*BoolProto)(nil),      // 3: appengine.base.BoolProto
+	(*DoubleProto)(nil),    // 4: appengine.base.DoubleProto
+	(*BytesProto)(nil),     // 5: appengine.base.BytesProto
+	(*VoidProto)(nil),      // 6: appengine.base.VoidProto
+}
+var file_api_base_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_api_base_proto_init() }
+func file_api_base_proto_init() {
+	if File_api_base_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_api_base_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StringProto); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_base_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Integer32Proto); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_base_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Integer64Proto); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_base_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BoolProto); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_base_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DoubleProto); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_base_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BytesProto); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_base_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*VoidProto); 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_api_base_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   7,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_api_base_proto_goTypes,
+		DependencyIndexes: file_api_base_proto_depIdxs,
+		MessageInfos:      file_api_base_proto_msgTypes,
+	}.Build()
+	File_api_base_proto = out.File
+	file_api_base_proto_rawDesc = nil
+	file_api_base_proto_goTypes = nil
+	file_api_base_proto_depIdxs = nil
 }
diff --git a/internal/base/api_base.proto b/internal/base/api_base.proto
index 56cd7a3c..13da88aa 100644
--- a/internal/base/api_base.proto
+++ b/internal/base/api_base.proto
@@ -1,32 +1,32 @@
 // Built-in base types for API calls. Primarily useful as return types.
 
-syntax = "proto2";
-option go_package = "base";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/base";
 
 package appengine.base;
 
 message StringProto {
-  required string value = 1;
+  string value = 1;
 }
 
 message Integer32Proto {
-  required int32 value = 1;
+  int32 value = 1;
 }
 
 message Integer64Proto {
-  required int64 value = 1;
+  int64 value = 1;
 }
 
 message BoolProto {
-  required bool value = 1;
+  bool value = 1;
 }
 
 message DoubleProto {
-  required double value = 1;
+  double value = 1;
 }
 
 message BytesProto {
-  required bytes value = 1 [ctype=CORD];
+  bytes value = 1 [ctype=CORD];
 }
 
 message VoidProto {
diff --git a/internal/blobstore/blobstore_service.pb.go b/internal/blobstore/blobstore_service.pb.go
index faef13a0..759a4150 100644
--- a/internal/blobstore/blobstore_service.pb.go
+++ b/internal/blobstore/blobstore_service.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/blobstore/blobstore_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: blobstore_service.proto
 
 package blobstore
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 BlobstoreServiceError_ErrorCode int32
 
@@ -32,635 +34,987 @@ const (
 	BlobstoreServiceError_INVALID_BLOB_KEY          BlobstoreServiceError_ErrorCode = 9
 )
 
-var BlobstoreServiceError_ErrorCode_name = map[int32]string{
-	0: "OK",
-	1: "INTERNAL_ERROR",
-	2: "URL_TOO_LONG",
-	3: "PERMISSION_DENIED",
-	4: "BLOB_NOT_FOUND",
-	5: "DATA_INDEX_OUT_OF_RANGE",
-	6: "BLOB_FETCH_SIZE_TOO_LARGE",
-	8: "ARGUMENT_OUT_OF_RANGE",
-	9: "INVALID_BLOB_KEY",
-}
-var BlobstoreServiceError_ErrorCode_value = map[string]int32{
-	"OK":                        0,
-	"INTERNAL_ERROR":            1,
-	"URL_TOO_LONG":              2,
-	"PERMISSION_DENIED":         3,
-	"BLOB_NOT_FOUND":            4,
-	"DATA_INDEX_OUT_OF_RANGE":   5,
-	"BLOB_FETCH_SIZE_TOO_LARGE": 6,
-	"ARGUMENT_OUT_OF_RANGE":     8,
-	"INVALID_BLOB_KEY":          9,
-}
+// Enum value maps for BlobstoreServiceError_ErrorCode.
+var (
+	BlobstoreServiceError_ErrorCode_name = map[int32]string{
+		0: "OK",
+		1: "INTERNAL_ERROR",
+		2: "URL_TOO_LONG",
+		3: "PERMISSION_DENIED",
+		4: "BLOB_NOT_FOUND",
+		5: "DATA_INDEX_OUT_OF_RANGE",
+		6: "BLOB_FETCH_SIZE_TOO_LARGE",
+		8: "ARGUMENT_OUT_OF_RANGE",
+		9: "INVALID_BLOB_KEY",
+	}
+	BlobstoreServiceError_ErrorCode_value = map[string]int32{
+		"OK":                        0,
+		"INTERNAL_ERROR":            1,
+		"URL_TOO_LONG":              2,
+		"PERMISSION_DENIED":         3,
+		"BLOB_NOT_FOUND":            4,
+		"DATA_INDEX_OUT_OF_RANGE":   5,
+		"BLOB_FETCH_SIZE_TOO_LARGE": 6,
+		"ARGUMENT_OUT_OF_RANGE":     8,
+		"INVALID_BLOB_KEY":          9,
+	}
+)
 
 func (x BlobstoreServiceError_ErrorCode) Enum() *BlobstoreServiceError_ErrorCode {
 	p := new(BlobstoreServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x BlobstoreServiceError_ErrorCode) String() string {
-	return proto.EnumName(BlobstoreServiceError_ErrorCode_name, int32(x))
-}
-func (x *BlobstoreServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(BlobstoreServiceError_ErrorCode_value, data, "BlobstoreServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = BlobstoreServiceError_ErrorCode(value)
-	return nil
-}
-func (BlobstoreServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{0, 0}
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type BlobstoreServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (BlobstoreServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_blobstore_service_proto_enumTypes[0].Descriptor()
 }
 
-func (m *BlobstoreServiceError) Reset()         { *m = BlobstoreServiceError{} }
-func (m *BlobstoreServiceError) String() string { return proto.CompactTextString(m) }
-func (*BlobstoreServiceError) ProtoMessage()    {}
-func (*BlobstoreServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{0}
+func (BlobstoreServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_blobstore_service_proto_enumTypes[0]
 }
-func (m *BlobstoreServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BlobstoreServiceError.Unmarshal(m, b)
+
+func (x BlobstoreServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *BlobstoreServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BlobstoreServiceError.Marshal(b, m, deterministic)
+
+// Deprecated: Use BlobstoreServiceError_ErrorCode.Descriptor instead.
+func (BlobstoreServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{0, 0}
 }
-func (dst *BlobstoreServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BlobstoreServiceError.Merge(dst, src)
+
+type BlobstoreServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *BlobstoreServiceError) XXX_Size() int {
-	return xxx_messageInfo_BlobstoreServiceError.Size(m)
+
+func (x *BlobstoreServiceError) Reset() {
+	*x = BlobstoreServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *BlobstoreServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_BlobstoreServiceError.DiscardUnknown(m)
+
+func (x *BlobstoreServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_BlobstoreServiceError proto.InternalMessageInfo
+func (*BlobstoreServiceError) ProtoMessage() {}
 
-type CreateUploadURLRequest struct {
-	SuccessPath               *string  `protobuf:"bytes,1,req,name=success_path,json=successPath" json:"success_path,omitempty"`
-	MaxUploadSizeBytes        *int64   `protobuf:"varint,2,opt,name=max_upload_size_bytes,json=maxUploadSizeBytes" json:"max_upload_size_bytes,omitempty"`
-	MaxUploadSizePerBlobBytes *int64   `protobuf:"varint,3,opt,name=max_upload_size_per_blob_bytes,json=maxUploadSizePerBlobBytes" json:"max_upload_size_per_blob_bytes,omitempty"`
-	GsBucketName              *string  `protobuf:"bytes,4,opt,name=gs_bucket_name,json=gsBucketName" json:"gs_bucket_name,omitempty"`
-	UrlExpiryTimeSeconds      *int32   `protobuf:"varint,5,opt,name=url_expiry_time_seconds,json=urlExpiryTimeSeconds" json:"url_expiry_time_seconds,omitempty"`
-	XXX_NoUnkeyedLiteral      struct{} `json:"-"`
-	XXX_unrecognized          []byte   `json:"-"`
-	XXX_sizecache             int32    `json:"-"`
-}
-
-func (m *CreateUploadURLRequest) Reset()         { *m = CreateUploadURLRequest{} }
-func (m *CreateUploadURLRequest) String() string { return proto.CompactTextString(m) }
-func (*CreateUploadURLRequest) ProtoMessage()    {}
-func (*CreateUploadURLRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{1}
-}
-func (m *CreateUploadURLRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateUploadURLRequest.Unmarshal(m, b)
+func (x *BlobstoreServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
-func (m *CreateUploadURLRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateUploadURLRequest.Marshal(b, m, deterministic)
+
+// Deprecated: Use BlobstoreServiceError.ProtoReflect.Descriptor instead.
+func (*BlobstoreServiceError) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{0}
 }
-func (dst *CreateUploadURLRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateUploadURLRequest.Merge(dst, src)
+
+type CreateUploadURLRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SuccessPath               string  `protobuf:"bytes,1,opt,name=success_path,json=successPath,proto3" json:"success_path,omitempty"`
+	MaxUploadSizeBytes        *int64  `protobuf:"varint,2,opt,name=max_upload_size_bytes,json=maxUploadSizeBytes,proto3,oneof" json:"max_upload_size_bytes,omitempty"`
+	MaxUploadSizePerBlobBytes *int64  `protobuf:"varint,3,opt,name=max_upload_size_per_blob_bytes,json=maxUploadSizePerBlobBytes,proto3,oneof" json:"max_upload_size_per_blob_bytes,omitempty"`
+	GsBucketName              *string `protobuf:"bytes,4,opt,name=gs_bucket_name,json=gsBucketName,proto3,oneof" json:"gs_bucket_name,omitempty"`
+	UrlExpiryTimeSeconds      *int32  `protobuf:"varint,5,opt,name=url_expiry_time_seconds,json=urlExpiryTimeSeconds,proto3,oneof" json:"url_expiry_time_seconds,omitempty"`
+}
+
+func (x *CreateUploadURLRequest) Reset() {
+	*x = CreateUploadURLRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateUploadURLRequest) XXX_Size() int {
-	return xxx_messageInfo_CreateUploadURLRequest.Size(m)
+
+func (x *CreateUploadURLRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateUploadURLRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateUploadURLRequest.DiscardUnknown(m)
+
+func (*CreateUploadURLRequest) ProtoMessage() {}
+
+func (x *CreateUploadURLRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_CreateUploadURLRequest proto.InternalMessageInfo
+// Deprecated: Use CreateUploadURLRequest.ProtoReflect.Descriptor instead.
+func (*CreateUploadURLRequest) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *CreateUploadURLRequest) GetSuccessPath() string {
-	if m != nil && m.SuccessPath != nil {
-		return *m.SuccessPath
+func (x *CreateUploadURLRequest) GetSuccessPath() string {
+	if x != nil {
+		return x.SuccessPath
 	}
 	return ""
 }
 
-func (m *CreateUploadURLRequest) GetMaxUploadSizeBytes() int64 {
-	if m != nil && m.MaxUploadSizeBytes != nil {
-		return *m.MaxUploadSizeBytes
+func (x *CreateUploadURLRequest) GetMaxUploadSizeBytes() int64 {
+	if x != nil && x.MaxUploadSizeBytes != nil {
+		return *x.MaxUploadSizeBytes
 	}
 	return 0
 }
 
-func (m *CreateUploadURLRequest) GetMaxUploadSizePerBlobBytes() int64 {
-	if m != nil && m.MaxUploadSizePerBlobBytes != nil {
-		return *m.MaxUploadSizePerBlobBytes
+func (x *CreateUploadURLRequest) GetMaxUploadSizePerBlobBytes() int64 {
+	if x != nil && x.MaxUploadSizePerBlobBytes != nil {
+		return *x.MaxUploadSizePerBlobBytes
 	}
 	return 0
 }
 
-func (m *CreateUploadURLRequest) GetGsBucketName() string {
-	if m != nil && m.GsBucketName != nil {
-		return *m.GsBucketName
+func (x *CreateUploadURLRequest) GetGsBucketName() string {
+	if x != nil && x.GsBucketName != nil {
+		return *x.GsBucketName
 	}
 	return ""
 }
 
-func (m *CreateUploadURLRequest) GetUrlExpiryTimeSeconds() int32 {
-	if m != nil && m.UrlExpiryTimeSeconds != nil {
-		return *m.UrlExpiryTimeSeconds
+func (x *CreateUploadURLRequest) GetUrlExpiryTimeSeconds() int32 {
+	if x != nil && x.UrlExpiryTimeSeconds != nil {
+		return *x.UrlExpiryTimeSeconds
 	}
 	return 0
 }
 
 type CreateUploadURLResponse struct {
-	Url                  *string  `protobuf:"bytes,1,req,name=url" json:"url,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CreateUploadURLResponse) Reset()         { *m = CreateUploadURLResponse{} }
-func (m *CreateUploadURLResponse) String() string { return proto.CompactTextString(m) }
-func (*CreateUploadURLResponse) ProtoMessage()    {}
-func (*CreateUploadURLResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{2}
+	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
 }
-func (m *CreateUploadURLResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateUploadURLResponse.Unmarshal(m, b)
-}
-func (m *CreateUploadURLResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateUploadURLResponse.Marshal(b, m, deterministic)
-}
-func (dst *CreateUploadURLResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateUploadURLResponse.Merge(dst, src)
+
+func (x *CreateUploadURLResponse) Reset() {
+	*x = CreateUploadURLResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateUploadURLResponse) XXX_Size() int {
-	return xxx_messageInfo_CreateUploadURLResponse.Size(m)
+
+func (x *CreateUploadURLResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateUploadURLResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateUploadURLResponse.DiscardUnknown(m)
+
+func (*CreateUploadURLResponse) ProtoMessage() {}
+
+func (x *CreateUploadURLResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_CreateUploadURLResponse proto.InternalMessageInfo
+// Deprecated: Use CreateUploadURLResponse.ProtoReflect.Descriptor instead.
+func (*CreateUploadURLResponse) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *CreateUploadURLResponse) GetUrl() string {
-	if m != nil && m.Url != nil {
-		return *m.Url
+func (x *CreateUploadURLResponse) GetUrl() string {
+	if x != nil {
+		return x.Url
 	}
 	return ""
 }
 
 type DeleteBlobRequest struct {
-	BlobKey              []string `protobuf:"bytes,1,rep,name=blob_key,json=blobKey" json:"blob_key,omitempty"`
-	Token                *string  `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DeleteBlobRequest) Reset()         { *m = DeleteBlobRequest{} }
-func (m *DeleteBlobRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteBlobRequest) ProtoMessage()    {}
-func (*DeleteBlobRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{3}
-}
-func (m *DeleteBlobRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteBlobRequest.Unmarshal(m, b)
-}
-func (m *DeleteBlobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteBlobRequest.Marshal(b, m, deterministic)
+	BlobKey []string `protobuf:"bytes,1,rep,name=blob_key,json=blobKey,proto3" json:"blob_key,omitempty"`
+	Token   *string  `protobuf:"bytes,2,opt,name=token,proto3,oneof" json:"token,omitempty"`
 }
-func (dst *DeleteBlobRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteBlobRequest.Merge(dst, src)
+
+func (x *DeleteBlobRequest) Reset() {
+	*x = DeleteBlobRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DeleteBlobRequest) XXX_Size() int {
-	return xxx_messageInfo_DeleteBlobRequest.Size(m)
+
+func (x *DeleteBlobRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DeleteBlobRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteBlobRequest.DiscardUnknown(m)
+
+func (*DeleteBlobRequest) ProtoMessage() {}
+
+func (x *DeleteBlobRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_DeleteBlobRequest proto.InternalMessageInfo
+// Deprecated: Use DeleteBlobRequest.ProtoReflect.Descriptor instead.
+func (*DeleteBlobRequest) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *DeleteBlobRequest) GetBlobKey() []string {
-	if m != nil {
-		return m.BlobKey
+func (x *DeleteBlobRequest) GetBlobKey() []string {
+	if x != nil {
+		return x.BlobKey
 	}
 	return nil
 }
 
-func (m *DeleteBlobRequest) GetToken() string {
-	if m != nil && m.Token != nil {
-		return *m.Token
+func (x *DeleteBlobRequest) GetToken() string {
+	if x != nil && x.Token != nil {
+		return *x.Token
 	}
 	return ""
 }
 
 type FetchDataRequest struct {
-	BlobKey              *string  `protobuf:"bytes,1,req,name=blob_key,json=blobKey" json:"blob_key,omitempty"`
-	StartIndex           *int64   `protobuf:"varint,2,req,name=start_index,json=startIndex" json:"start_index,omitempty"`
-	EndIndex             *int64   `protobuf:"varint,3,req,name=end_index,json=endIndex" json:"end_index,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FetchDataRequest) Reset()         { *m = FetchDataRequest{} }
-func (m *FetchDataRequest) String() string { return proto.CompactTextString(m) }
-func (*FetchDataRequest) ProtoMessage()    {}
-func (*FetchDataRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{4}
-}
-func (m *FetchDataRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FetchDataRequest.Unmarshal(m, b)
-}
-func (m *FetchDataRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FetchDataRequest.Marshal(b, m, deterministic)
+	BlobKey    string `protobuf:"bytes,1,opt,name=blob_key,json=blobKey,proto3" json:"blob_key,omitempty"`
+	StartIndex int64  `protobuf:"varint,2,opt,name=start_index,json=startIndex,proto3" json:"start_index,omitempty"`
+	EndIndex   int64  `protobuf:"varint,3,opt,name=end_index,json=endIndex,proto3" json:"end_index,omitempty"`
 }
-func (dst *FetchDataRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FetchDataRequest.Merge(dst, src)
+
+func (x *FetchDataRequest) Reset() {
+	*x = FetchDataRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FetchDataRequest) XXX_Size() int {
-	return xxx_messageInfo_FetchDataRequest.Size(m)
+
+func (x *FetchDataRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *FetchDataRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_FetchDataRequest.DiscardUnknown(m)
+
+func (*FetchDataRequest) ProtoMessage() {}
+
+func (x *FetchDataRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_FetchDataRequest proto.InternalMessageInfo
+// Deprecated: Use FetchDataRequest.ProtoReflect.Descriptor instead.
+func (*FetchDataRequest) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{4}
+}
 
-func (m *FetchDataRequest) GetBlobKey() string {
-	if m != nil && m.BlobKey != nil {
-		return *m.BlobKey
+func (x *FetchDataRequest) GetBlobKey() string {
+	if x != nil {
+		return x.BlobKey
 	}
 	return ""
 }
 
-func (m *FetchDataRequest) GetStartIndex() int64 {
-	if m != nil && m.StartIndex != nil {
-		return *m.StartIndex
+func (x *FetchDataRequest) GetStartIndex() int64 {
+	if x != nil {
+		return x.StartIndex
 	}
 	return 0
 }
 
-func (m *FetchDataRequest) GetEndIndex() int64 {
-	if m != nil && m.EndIndex != nil {
-		return *m.EndIndex
+func (x *FetchDataRequest) GetEndIndex() int64 {
+	if x != nil {
+		return x.EndIndex
 	}
 	return 0
 }
 
 type FetchDataResponse struct {
-	Data                 []byte   `protobuf:"bytes,1000,req,name=data" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FetchDataResponse) Reset()         { *m = FetchDataResponse{} }
-func (m *FetchDataResponse) String() string { return proto.CompactTextString(m) }
-func (*FetchDataResponse) ProtoMessage()    {}
-func (*FetchDataResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{5}
+	Data []byte `protobuf:"bytes,1000,opt,name=data,proto3" json:"data,omitempty"`
 }
-func (m *FetchDataResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FetchDataResponse.Unmarshal(m, b)
-}
-func (m *FetchDataResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FetchDataResponse.Marshal(b, m, deterministic)
-}
-func (dst *FetchDataResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FetchDataResponse.Merge(dst, src)
+
+func (x *FetchDataResponse) Reset() {
+	*x = FetchDataResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FetchDataResponse) XXX_Size() int {
-	return xxx_messageInfo_FetchDataResponse.Size(m)
+
+func (x *FetchDataResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *FetchDataResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_FetchDataResponse.DiscardUnknown(m)
+
+func (*FetchDataResponse) ProtoMessage() {}
+
+func (x *FetchDataResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_FetchDataResponse proto.InternalMessageInfo
+// Deprecated: Use FetchDataResponse.ProtoReflect.Descriptor instead.
+func (*FetchDataResponse) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *FetchDataResponse) GetData() []byte {
-	if m != nil {
-		return m.Data
+func (x *FetchDataResponse) GetData() []byte {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
 type CloneBlobRequest struct {
-	BlobKey              []byte   `protobuf:"bytes,1,req,name=blob_key,json=blobKey" json:"blob_key,omitempty"`
-	MimeType             []byte   `protobuf:"bytes,2,req,name=mime_type,json=mimeType" json:"mime_type,omitempty"`
-	TargetAppId          []byte   `protobuf:"bytes,3,req,name=target_app_id,json=targetAppId" json:"target_app_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CloneBlobRequest) Reset()         { *m = CloneBlobRequest{} }
-func (m *CloneBlobRequest) String() string { return proto.CompactTextString(m) }
-func (*CloneBlobRequest) ProtoMessage()    {}
-func (*CloneBlobRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{6}
-}
-func (m *CloneBlobRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CloneBlobRequest.Unmarshal(m, b)
-}
-func (m *CloneBlobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CloneBlobRequest.Marshal(b, m, deterministic)
+	BlobKey     []byte `protobuf:"bytes,1,opt,name=blob_key,json=blobKey,proto3" json:"blob_key,omitempty"`
+	MimeType    []byte `protobuf:"bytes,2,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
+	TargetAppId []byte `protobuf:"bytes,3,opt,name=target_app_id,json=targetAppId,proto3" json:"target_app_id,omitempty"`
 }
-func (dst *CloneBlobRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CloneBlobRequest.Merge(dst, src)
+
+func (x *CloneBlobRequest) Reset() {
+	*x = CloneBlobRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CloneBlobRequest) XXX_Size() int {
-	return xxx_messageInfo_CloneBlobRequest.Size(m)
+
+func (x *CloneBlobRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CloneBlobRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CloneBlobRequest.DiscardUnknown(m)
+
+func (*CloneBlobRequest) ProtoMessage() {}
+
+func (x *CloneBlobRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_CloneBlobRequest proto.InternalMessageInfo
+// Deprecated: Use CloneBlobRequest.ProtoReflect.Descriptor instead.
+func (*CloneBlobRequest) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{6}
+}
 
-func (m *CloneBlobRequest) GetBlobKey() []byte {
-	if m != nil {
-		return m.BlobKey
+func (x *CloneBlobRequest) GetBlobKey() []byte {
+	if x != nil {
+		return x.BlobKey
 	}
 	return nil
 }
 
-func (m *CloneBlobRequest) GetMimeType() []byte {
-	if m != nil {
-		return m.MimeType
+func (x *CloneBlobRequest) GetMimeType() []byte {
+	if x != nil {
+		return x.MimeType
 	}
 	return nil
 }
 
-func (m *CloneBlobRequest) GetTargetAppId() []byte {
-	if m != nil {
-		return m.TargetAppId
+func (x *CloneBlobRequest) GetTargetAppId() []byte {
+	if x != nil {
+		return x.TargetAppId
 	}
 	return nil
 }
 
 type CloneBlobResponse struct {
-	BlobKey              []byte   `protobuf:"bytes,1,req,name=blob_key,json=blobKey" json:"blob_key,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CloneBlobResponse) Reset()         { *m = CloneBlobResponse{} }
-func (m *CloneBlobResponse) String() string { return proto.CompactTextString(m) }
-func (*CloneBlobResponse) ProtoMessage()    {}
-func (*CloneBlobResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{7}
-}
-func (m *CloneBlobResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CloneBlobResponse.Unmarshal(m, b)
-}
-func (m *CloneBlobResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CloneBlobResponse.Marshal(b, m, deterministic)
+	BlobKey []byte `protobuf:"bytes,1,opt,name=blob_key,json=blobKey,proto3" json:"blob_key,omitempty"`
 }
-func (dst *CloneBlobResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CloneBlobResponse.Merge(dst, src)
+
+func (x *CloneBlobResponse) Reset() {
+	*x = CloneBlobResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CloneBlobResponse) XXX_Size() int {
-	return xxx_messageInfo_CloneBlobResponse.Size(m)
+
+func (x *CloneBlobResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CloneBlobResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CloneBlobResponse.DiscardUnknown(m)
+
+func (*CloneBlobResponse) ProtoMessage() {}
+
+func (x *CloneBlobResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_CloneBlobResponse proto.InternalMessageInfo
+// Deprecated: Use CloneBlobResponse.ProtoReflect.Descriptor instead.
+func (*CloneBlobResponse) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{7}
+}
 
-func (m *CloneBlobResponse) GetBlobKey() []byte {
-	if m != nil {
-		return m.BlobKey
+func (x *CloneBlobResponse) GetBlobKey() []byte {
+	if x != nil {
+		return x.BlobKey
 	}
 	return nil
 }
 
 type DecodeBlobKeyRequest struct {
-	BlobKey              []string `protobuf:"bytes,1,rep,name=blob_key,json=blobKey" json:"blob_key,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DecodeBlobKeyRequest) Reset()         { *m = DecodeBlobKeyRequest{} }
-func (m *DecodeBlobKeyRequest) String() string { return proto.CompactTextString(m) }
-func (*DecodeBlobKeyRequest) ProtoMessage()    {}
-func (*DecodeBlobKeyRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{8}
+	BlobKey []string `protobuf:"bytes,1,rep,name=blob_key,json=blobKey,proto3" json:"blob_key,omitempty"`
 }
-func (m *DecodeBlobKeyRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DecodeBlobKeyRequest.Unmarshal(m, b)
-}
-func (m *DecodeBlobKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DecodeBlobKeyRequest.Marshal(b, m, deterministic)
-}
-func (dst *DecodeBlobKeyRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DecodeBlobKeyRequest.Merge(dst, src)
+
+func (x *DecodeBlobKeyRequest) Reset() {
+	*x = DecodeBlobKeyRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DecodeBlobKeyRequest) XXX_Size() int {
-	return xxx_messageInfo_DecodeBlobKeyRequest.Size(m)
+
+func (x *DecodeBlobKeyRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DecodeBlobKeyRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DecodeBlobKeyRequest.DiscardUnknown(m)
+
+func (*DecodeBlobKeyRequest) ProtoMessage() {}
+
+func (x *DecodeBlobKeyRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_DecodeBlobKeyRequest proto.InternalMessageInfo
+// Deprecated: Use DecodeBlobKeyRequest.ProtoReflect.Descriptor instead.
+func (*DecodeBlobKeyRequest) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{8}
+}
 
-func (m *DecodeBlobKeyRequest) GetBlobKey() []string {
-	if m != nil {
-		return m.BlobKey
+func (x *DecodeBlobKeyRequest) GetBlobKey() []string {
+	if x != nil {
+		return x.BlobKey
 	}
 	return nil
 }
 
 type DecodeBlobKeyResponse struct {
-	Decoded              []string `protobuf:"bytes,1,rep,name=decoded" json:"decoded,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DecodeBlobKeyResponse) Reset()         { *m = DecodeBlobKeyResponse{} }
-func (m *DecodeBlobKeyResponse) String() string { return proto.CompactTextString(m) }
-func (*DecodeBlobKeyResponse) ProtoMessage()    {}
-func (*DecodeBlobKeyResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{9}
-}
-func (m *DecodeBlobKeyResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DecodeBlobKeyResponse.Unmarshal(m, b)
+	Decoded []string `protobuf:"bytes,1,rep,name=decoded,proto3" json:"decoded,omitempty"`
 }
-func (m *DecodeBlobKeyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DecodeBlobKeyResponse.Marshal(b, m, deterministic)
-}
-func (dst *DecodeBlobKeyResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DecodeBlobKeyResponse.Merge(dst, src)
+
+func (x *DecodeBlobKeyResponse) Reset() {
+	*x = DecodeBlobKeyResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DecodeBlobKeyResponse) XXX_Size() int {
-	return xxx_messageInfo_DecodeBlobKeyResponse.Size(m)
+
+func (x *DecodeBlobKeyResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DecodeBlobKeyResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_DecodeBlobKeyResponse.DiscardUnknown(m)
+
+func (*DecodeBlobKeyResponse) ProtoMessage() {}
+
+func (x *DecodeBlobKeyResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_DecodeBlobKeyResponse proto.InternalMessageInfo
+// Deprecated: Use DecodeBlobKeyResponse.ProtoReflect.Descriptor instead.
+func (*DecodeBlobKeyResponse) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{9}
+}
 
-func (m *DecodeBlobKeyResponse) GetDecoded() []string {
-	if m != nil {
-		return m.Decoded
+func (x *DecodeBlobKeyResponse) GetDecoded() []string {
+	if x != nil {
+		return x.Decoded
 	}
 	return nil
 }
 
 type CreateEncodedGoogleStorageKeyRequest struct {
-	Filename             *string  `protobuf:"bytes,1,req,name=filename" json:"filename,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CreateEncodedGoogleStorageKeyRequest) Reset()         { *m = CreateEncodedGoogleStorageKeyRequest{} }
-func (m *CreateEncodedGoogleStorageKeyRequest) String() string { return proto.CompactTextString(m) }
-func (*CreateEncodedGoogleStorageKeyRequest) ProtoMessage()    {}
-func (*CreateEncodedGoogleStorageKeyRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{10}
-}
-func (m *CreateEncodedGoogleStorageKeyRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateEncodedGoogleStorageKeyRequest.Unmarshal(m, b)
+	Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"`
 }
-func (m *CreateEncodedGoogleStorageKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateEncodedGoogleStorageKeyRequest.Marshal(b, m, deterministic)
-}
-func (dst *CreateEncodedGoogleStorageKeyRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateEncodedGoogleStorageKeyRequest.Merge(dst, src)
+
+func (x *CreateEncodedGoogleStorageKeyRequest) Reset() {
+	*x = CreateEncodedGoogleStorageKeyRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateEncodedGoogleStorageKeyRequest) XXX_Size() int {
-	return xxx_messageInfo_CreateEncodedGoogleStorageKeyRequest.Size(m)
+
+func (x *CreateEncodedGoogleStorageKeyRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateEncodedGoogleStorageKeyRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateEncodedGoogleStorageKeyRequest.DiscardUnknown(m)
+
+func (*CreateEncodedGoogleStorageKeyRequest) ProtoMessage() {}
+
+func (x *CreateEncodedGoogleStorageKeyRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_CreateEncodedGoogleStorageKeyRequest proto.InternalMessageInfo
+// Deprecated: Use CreateEncodedGoogleStorageKeyRequest.ProtoReflect.Descriptor instead.
+func (*CreateEncodedGoogleStorageKeyRequest) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{10}
+}
 
-func (m *CreateEncodedGoogleStorageKeyRequest) GetFilename() string {
-	if m != nil && m.Filename != nil {
-		return *m.Filename
+func (x *CreateEncodedGoogleStorageKeyRequest) GetFilename() string {
+	if x != nil {
+		return x.Filename
 	}
 	return ""
 }
 
 type CreateEncodedGoogleStorageKeyResponse struct {
-	BlobKey              *string  `protobuf:"bytes,1,req,name=blob_key,json=blobKey" json:"blob_key,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CreateEncodedGoogleStorageKeyResponse) Reset()         { *m = CreateEncodedGoogleStorageKeyResponse{} }
-func (m *CreateEncodedGoogleStorageKeyResponse) String() string { return proto.CompactTextString(m) }
-func (*CreateEncodedGoogleStorageKeyResponse) ProtoMessage()    {}
-func (*CreateEncodedGoogleStorageKeyResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_blobstore_service_3604fb6033ea2e2e, []int{11}
-}
-func (m *CreateEncodedGoogleStorageKeyResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateEncodedGoogleStorageKeyResponse.Unmarshal(m, b)
-}
-func (m *CreateEncodedGoogleStorageKeyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateEncodedGoogleStorageKeyResponse.Marshal(b, m, deterministic)
+	BlobKey string `protobuf:"bytes,1,opt,name=blob_key,json=blobKey,proto3" json:"blob_key,omitempty"`
 }
-func (dst *CreateEncodedGoogleStorageKeyResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateEncodedGoogleStorageKeyResponse.Merge(dst, src)
+
+func (x *CreateEncodedGoogleStorageKeyResponse) Reset() {
+	*x = CreateEncodedGoogleStorageKeyResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_blobstore_service_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateEncodedGoogleStorageKeyResponse) XXX_Size() int {
-	return xxx_messageInfo_CreateEncodedGoogleStorageKeyResponse.Size(m)
+
+func (x *CreateEncodedGoogleStorageKeyResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateEncodedGoogleStorageKeyResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateEncodedGoogleStorageKeyResponse.DiscardUnknown(m)
+
+func (*CreateEncodedGoogleStorageKeyResponse) ProtoMessage() {}
+
+func (x *CreateEncodedGoogleStorageKeyResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_blobstore_service_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)
 }
 
-var xxx_messageInfo_CreateEncodedGoogleStorageKeyResponse proto.InternalMessageInfo
+// Deprecated: Use CreateEncodedGoogleStorageKeyResponse.ProtoReflect.Descriptor instead.
+func (*CreateEncodedGoogleStorageKeyResponse) Descriptor() ([]byte, []int) {
+	return file_blobstore_service_proto_rawDescGZIP(), []int{11}
+}
 
-func (m *CreateEncodedGoogleStorageKeyResponse) GetBlobKey() string {
-	if m != nil && m.BlobKey != nil {
-		return *m.BlobKey
+func (x *CreateEncodedGoogleStorageKeyResponse) GetBlobKey() string {
+	if x != nil {
+		return x.BlobKey
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*BlobstoreServiceError)(nil), "appengine.BlobstoreServiceError")
-	proto.RegisterType((*CreateUploadURLRequest)(nil), "appengine.CreateUploadURLRequest")
-	proto.RegisterType((*CreateUploadURLResponse)(nil), "appengine.CreateUploadURLResponse")
-	proto.RegisterType((*DeleteBlobRequest)(nil), "appengine.DeleteBlobRequest")
-	proto.RegisterType((*FetchDataRequest)(nil), "appengine.FetchDataRequest")
-	proto.RegisterType((*FetchDataResponse)(nil), "appengine.FetchDataResponse")
-	proto.RegisterType((*CloneBlobRequest)(nil), "appengine.CloneBlobRequest")
-	proto.RegisterType((*CloneBlobResponse)(nil), "appengine.CloneBlobResponse")
-	proto.RegisterType((*DecodeBlobKeyRequest)(nil), "appengine.DecodeBlobKeyRequest")
-	proto.RegisterType((*DecodeBlobKeyResponse)(nil), "appengine.DecodeBlobKeyResponse")
-	proto.RegisterType((*CreateEncodedGoogleStorageKeyRequest)(nil), "appengine.CreateEncodedGoogleStorageKeyRequest")
-	proto.RegisterType((*CreateEncodedGoogleStorageKeyResponse)(nil), "appengine.CreateEncodedGoogleStorageKeyResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/blobstore/blobstore_service.proto", fileDescriptor_blobstore_service_3604fb6033ea2e2e)
-}
-
-var fileDescriptor_blobstore_service_3604fb6033ea2e2e = []byte{
-	// 737 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0xe1, 0x6e, 0xe3, 0x44,
-	0x10, 0xc6, 0x4e, 0x7b, 0x8d, 0xa7, 0xe1, 0xe4, 0xae, 0x1a, 0x9a, 0x52, 0x01, 0xc1, 0x3a, 0xa4,
-	0x48, 0xa0, 0x56, 0xfd, 0xc1, 0x03, 0xd8, 0xb5, 0x13, 0xac, 0xe6, 0xec, 0x6a, 0xe3, 0x20, 0xb8,
-	0x3f, 0xab, 0x6d, 0x3c, 0xb8, 0x56, 0x1d, 0xaf, 0x59, 0x6f, 0x50, 0x73, 0x0f, 0xc1, 0xbb, 0xf1,
-	0x16, 0x48, 0xbc, 0x04, 0xf2, 0xda, 0x6d, 0x73, 0x07, 0x77, 0xf7, 0x6f, 0xe7, 0xfb, 0xf6, 0x9b,
-	0xf9, 0x66, 0x66, 0xb5, 0x30, 0xcd, 0x84, 0xc8, 0x0a, 0x3c, 0xcf, 0x44, 0xc1, 0xcb, 0xec, 0x5c,
-	0xc8, 0xec, 0x82, 0x57, 0x15, 0x96, 0x59, 0x5e, 0xe2, 0x45, 0x5e, 0x2a, 0x94, 0x25, 0x2f, 0x2e,
-	0x6e, 0x0b, 0x71, 0x5b, 0x2b, 0x21, 0xf1, 0xf9, 0xc4, 0x6a, 0x94, 0x7f, 0xe4, 0x2b, 0x3c, 0xaf,
-	0xa4, 0x50, 0x82, 0x58, 0x4f, 0x2a, 0xe7, 0x1f, 0x03, 0x86, 0xde, 0xe3, 0xb5, 0x45, 0x7b, 0x2b,
-	0x90, 0x52, 0x48, 0xe7, 0x2f, 0x03, 0x2c, 0x7d, 0xba, 0x12, 0x29, 0x92, 0x17, 0x60, 0xc6, 0xd7,
-	0xf6, 0x67, 0x84, 0xc0, 0xcb, 0x30, 0x4a, 0x02, 0x1a, 0xb9, 0x73, 0x16, 0x50, 0x1a, 0x53, 0xdb,
-	0x20, 0x36, 0x0c, 0x96, 0x74, 0xce, 0x92, 0x38, 0x66, 0xf3, 0x38, 0x9a, 0xd9, 0x26, 0x19, 0xc2,
-	0xd1, 0x4d, 0x40, 0x5f, 0x87, 0x8b, 0x45, 0x18, 0x47, 0xcc, 0x0f, 0xa2, 0x30, 0xf0, 0xed, 0x5e,
-	0x23, 0xf6, 0xe6, 0xb1, 0xc7, 0xa2, 0x38, 0x61, 0xd3, 0x78, 0x19, 0xf9, 0xf6, 0x1e, 0x39, 0x83,
-	0x13, 0xdf, 0x4d, 0x5c, 0x16, 0x46, 0x7e, 0xf0, 0x0b, 0x8b, 0x97, 0x09, 0x8b, 0xa7, 0x8c, 0xba,
-	0xd1, 0x2c, 0xb0, 0xf7, 0xc9, 0x57, 0x70, 0xaa, 0x05, 0xd3, 0x20, 0xb9, 0xfa, 0x89, 0x2d, 0xc2,
-	0x37, 0x41, 0x5b, 0xc5, 0xa5, 0xb3, 0xc0, 0x7e, 0x41, 0x4e, 0x61, 0xe8, 0xd2, 0xd9, 0xf2, 0x75,
-	0x10, 0x25, 0xef, 0x2a, 0xfb, 0xe4, 0x18, 0xec, 0x30, 0xfa, 0xd9, 0x9d, 0x87, 0x3e, 0xd3, 0x19,
-	0xae, 0x83, 0x5f, 0x6d, 0xcb, 0xf9, 0xd3, 0x84, 0x2f, 0xae, 0x24, 0x72, 0x85, 0xcb, 0xaa, 0x10,
-	0x3c, 0x5d, 0xd2, 0x39, 0xc5, 0xdf, 0x37, 0x58, 0x2b, 0xf2, 0x2d, 0x0c, 0xea, 0xcd, 0x6a, 0x85,
-	0x75, 0xcd, 0x2a, 0xae, 0xee, 0x46, 0xc6, 0xd8, 0x9c, 0x58, 0xf4, 0xb0, 0xc3, 0x6e, 0xb8, 0xba,
-	0x23, 0x97, 0x30, 0x5c, 0xf3, 0x07, 0xb6, 0xd1, 0x52, 0x56, 0xe7, 0x6f, 0x91, 0xdd, 0x6e, 0x15,
-	0xd6, 0x23, 0x73, 0x6c, 0x4c, 0x7a, 0x94, 0xac, 0xf9, 0x43, 0x9b, 0x76, 0x91, 0xbf, 0x45, 0xaf,
-	0x61, 0x88, 0x0b, 0x5f, 0xbf, 0x2f, 0xa9, 0x50, 0xb2, 0x66, 0x31, 0x9d, 0xb6, 0xa7, 0xb5, 0xa7,
-	0xef, 0x68, 0x6f, 0x50, 0x36, 0x3b, 0x69, 0x53, 0xbc, 0x82, 0x97, 0x59, 0xcd, 0x6e, 0x37, 0xab,
-	0x7b, 0x54, 0xac, 0xe4, 0x6b, 0x1c, 0xed, 0x8d, 0x8d, 0x89, 0x45, 0x07, 0x59, 0xed, 0x69, 0x30,
-	0xe2, 0x6b, 0x24, 0x3f, 0xc2, 0xc9, 0x46, 0x16, 0x0c, 0x1f, 0xaa, 0x5c, 0x6e, 0x99, 0xca, 0xd7,
-	0xcd, 0xce, 0x57, 0xa2, 0x4c, 0xeb, 0xd1, 0xfe, 0xd8, 0x98, 0xec, 0xd3, 0xe3, 0x8d, 0x2c, 0x02,
-	0xcd, 0x26, 0xf9, 0x1a, 0x17, 0x2d, 0xe7, 0x7c, 0x0f, 0x27, 0xff, 0x99, 0x47, 0x5d, 0x89, 0xb2,
-	0x46, 0x62, 0x43, 0x6f, 0x23, 0x8b, 0x6e, 0x0e, 0xcd, 0xd1, 0xf1, 0xe1, 0xc8, 0xc7, 0x02, 0x15,
-	0x36, 0xe6, 0x1e, 0xe7, 0x76, 0x0a, 0x7d, 0xdd, 0xcd, 0x3d, 0x6e, 0x47, 0xc6, 0xb8, 0x37, 0xb1,
-	0xe8, 0x41, 0x13, 0x5f, 0xe3, 0x96, 0x1c, 0xc3, 0xbe, 0x12, 0xf7, 0x58, 0xea, 0xf9, 0x58, 0xb4,
-	0x0d, 0x9c, 0x7b, 0xb0, 0xa7, 0xa8, 0x56, 0x77, 0x3e, 0x57, 0xfc, 0xff, 0x93, 0x98, 0xbb, 0x49,
-	0xbe, 0x81, 0xc3, 0x5a, 0x71, 0xa9, 0x58, 0x5e, 0xa6, 0xf8, 0x30, 0x32, 0xc7, 0xe6, 0xa4, 0x47,
-	0x41, 0x43, 0x61, 0x83, 0x90, 0x33, 0xb0, 0xb0, 0x4c, 0x3b, 0xba, 0xa7, 0xe9, 0x3e, 0x96, 0xa9,
-	0x26, 0x9d, 0x1f, 0xe0, 0x68, 0xa7, 0x58, 0xd7, 0xd9, 0x09, 0xec, 0xa5, 0x5c, 0xf1, 0xd1, 0xdf,
-	0x07, 0x63, 0x73, 0x32, 0xf0, 0xcc, 0xbe, 0x41, 0x35, 0xe0, 0x94, 0x60, 0x5f, 0x15, 0xa2, 0xfc,
-	0x48, 0x7f, 0xe6, 0x64, 0xf0, 0x6c, 0xed, 0x0c, 0xac, 0x75, 0x33, 0x68, 0xb5, 0xad, 0x50, 0x1b,
-	0x1b, 0xd0, 0x7e, 0x03, 0x24, 0xdb, 0x0a, 0x89, 0x03, 0x9f, 0x2b, 0x2e, 0x33, 0x54, 0x8c, 0x57,
-	0x15, 0xcb, 0x53, 0x6d, 0x6d, 0x40, 0x0f, 0x5b, 0xd0, 0xad, 0xaa, 0x30, 0x75, 0xce, 0xe1, 0x68,
-	0xa7, 0x5e, 0xe7, 0xee, 0xc3, 0x05, 0x9d, 0x4b, 0x38, 0xf6, 0x71, 0x25, 0x52, 0x2d, 0xb8, 0xc6,
-	0xed, 0xa7, 0x77, 0xe0, 0x5c, 0xc2, 0xf0, 0x3d, 0x49, 0x57, 0x66, 0x04, 0x07, 0xa9, 0x26, 0xd2,
-	0x47, 0x49, 0x17, 0x3a, 0x1e, 0xbc, 0x6a, 0xdf, 0x44, 0x50, 0x6a, 0x60, 0xa6, 0x3f, 0x9d, 0x85,
-	0x12, 0x92, 0x67, 0xb8, 0x53, 0xf5, 0x4b, 0xe8, 0xff, 0x96, 0x17, 0xa8, 0x9f, 0x64, 0xbb, 0xb4,
-	0xa7, 0xd8, 0xf1, 0xe0, 0xbb, 0x4f, 0xe4, 0xf8, 0x40, 0xb7, 0xcf, 0xd6, 0xbd, 0xc3, 0x37, 0xd6,
-	0xd3, 0x07, 0xf6, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc1, 0xfb, 0x81, 0x94, 0xfb, 0x04, 0x00,
-	0x00,
+var File_blobstore_service_proto protoreflect.FileDescriptor
+
+var file_blobstore_service_proto_rawDesc = []byte{
+	0x0a, 0x17, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x22, 0xeb, 0x01, 0x0a, 0x15, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x74, 0x6f,
+	0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd1,
+	0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02,
+	0x4f, 0x4b, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c,
+	0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x52, 0x4c, 0x5f,
+	0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45,
+	0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10,
+	0x03, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f,
+	0x55, 0x4e, 0x44, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x49, 0x4e,
+	0x44, 0x45, 0x58, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45,
+	0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x46, 0x45, 0x54, 0x43, 0x48,
+	0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x41, 0x52, 0x47, 0x45, 0x10,
+	0x06, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4f, 0x55,
+	0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10,
+	0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x4b, 0x45, 0x59,
+	0x10, 0x09, 0x22, 0x8e, 0x03, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c,
+	0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a,
+	0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x61, 0x74, 0x68,
+	0x12, 0x36, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73,
+	0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48,
+	0x00, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x1e, 0x6d, 0x61, 0x78, 0x5f,
+	0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f,
+	0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
+	0x48, 0x01, 0x52, 0x19, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a,
+	0x65, 0x50, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x62, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01,
+	0x12, 0x29, 0x0a, 0x0e, 0x67, 0x73, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x67, 0x73, 0x42, 0x75,
+	0x63, 0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x75,
+	0x72, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73,
+	0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x14,
+	0x75, 0x72, 0x6c, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63,
+	0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
+	0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65,
+	0x73, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64,
+	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x62,
+	0x79, 0x74, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x67, 0x73, 0x5f, 0x62, 0x75, 0x63, 0x6b,
+	0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x75, 0x72, 0x6c, 0x5f,
+	0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f,
+	0x6e, 0x64, 0x73, 0x22, 0x2b, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c,
+	0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10,
+	0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
+	0x22, 0x53, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x65,
+	0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x4b, 0x65, 0x79,
+	0x12, 0x19, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f,
+	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x6b, 0x0a, 0x10, 0x46, 0x65, 0x74, 0x63, 0x68, 0x44, 0x61,
+	0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f,
+	0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f,
+	0x62, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e,
+	0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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, 0x03, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x64,
+	0x65, 0x78, 0x22, 0x2c, 0x0a, 0x11, 0x46, 0x65, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
+	0xe8, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x08, 0x01, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
+	0x22, 0x6e, 0x0a, 0x10, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x4b, 0x65, 0x79, 0x12,
+	0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0c, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0d,
+	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x70, 0x70, 0x49, 0x64,
+	0x22, 0x2e, 0x0a, 0x11, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x65,
+	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x4b, 0x65, 0x79,
+	0x22, 0x31, 0x0a, 0x14, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x4b, 0x65,
+	0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62,
+	0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62,
+	0x4b, 0x65, 0x79, 0x22, 0x31, 0x0a, 0x15, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f,
+	0x62, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07,
+	0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64,
+	0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x22, 0x42, 0x0a, 0x24, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+	0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x53, 0x74, 0x6f,
+	0x72, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a,
+	0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x25, 0x43, 0x72,
+	0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x47, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x4b, 0x65, 0x79, 0x42, 0x30,
+	0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x74, 0x6f, 0x72, 0x65,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_blobstore_service_proto_rawDescOnce sync.Once
+	file_blobstore_service_proto_rawDescData = file_blobstore_service_proto_rawDesc
+)
+
+func file_blobstore_service_proto_rawDescGZIP() []byte {
+	file_blobstore_service_proto_rawDescOnce.Do(func() {
+		file_blobstore_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_blobstore_service_proto_rawDescData)
+	})
+	return file_blobstore_service_proto_rawDescData
+}
+
+var file_blobstore_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_blobstore_service_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
+var file_blobstore_service_proto_goTypes = []interface{}{
+	(BlobstoreServiceError_ErrorCode)(0),          // 0: appengine.BlobstoreServiceError.ErrorCode
+	(*BlobstoreServiceError)(nil),                 // 1: appengine.BlobstoreServiceError
+	(*CreateUploadURLRequest)(nil),                // 2: appengine.CreateUploadURLRequest
+	(*CreateUploadURLResponse)(nil),               // 3: appengine.CreateUploadURLResponse
+	(*DeleteBlobRequest)(nil),                     // 4: appengine.DeleteBlobRequest
+	(*FetchDataRequest)(nil),                      // 5: appengine.FetchDataRequest
+	(*FetchDataResponse)(nil),                     // 6: appengine.FetchDataResponse
+	(*CloneBlobRequest)(nil),                      // 7: appengine.CloneBlobRequest
+	(*CloneBlobResponse)(nil),                     // 8: appengine.CloneBlobResponse
+	(*DecodeBlobKeyRequest)(nil),                  // 9: appengine.DecodeBlobKeyRequest
+	(*DecodeBlobKeyResponse)(nil),                 // 10: appengine.DecodeBlobKeyResponse
+	(*CreateEncodedGoogleStorageKeyRequest)(nil),  // 11: appengine.CreateEncodedGoogleStorageKeyRequest
+	(*CreateEncodedGoogleStorageKeyResponse)(nil), // 12: appengine.CreateEncodedGoogleStorageKeyResponse
+}
+var file_blobstore_service_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_blobstore_service_proto_init() }
+func file_blobstore_service_proto_init() {
+	if File_blobstore_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_blobstore_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BlobstoreServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateUploadURLRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateUploadURLResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteBlobRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FetchDataRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FetchDataResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CloneBlobRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CloneBlobResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DecodeBlobKeyRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DecodeBlobKeyResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateEncodedGoogleStorageKeyRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_blobstore_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateEncodedGoogleStorageKeyResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_blobstore_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_blobstore_service_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_blobstore_service_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   12,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_blobstore_service_proto_goTypes,
+		DependencyIndexes: file_blobstore_service_proto_depIdxs,
+		EnumInfos:         file_blobstore_service_proto_enumTypes,
+		MessageInfos:      file_blobstore_service_proto_msgTypes,
+	}.Build()
+	File_blobstore_service_proto = out.File
+	file_blobstore_service_proto_rawDesc = nil
+	file_blobstore_service_proto_goTypes = nil
+	file_blobstore_service_proto_depIdxs = nil
 }
diff --git a/internal/blobstore/blobstore_service.proto b/internal/blobstore/blobstore_service.proto
index 33b26503..82f3d8e6 100644
--- a/internal/blobstore/blobstore_service.proto
+++ b/internal/blobstore/blobstore_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "blobstore";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/blobstore";
 
 package appengine;
 
@@ -18,7 +18,7 @@ message BlobstoreServiceError {
 }
 
 message CreateUploadURLRequest {
-  required string success_path = 1;
+  string success_path = 1;
   optional int64 max_upload_size_bytes = 2;
   optional int64 max_upload_size_per_blob_bytes = 3;
   optional string gs_bucket_name = 4;
@@ -26,7 +26,7 @@ message CreateUploadURLRequest {
 }
 
 message CreateUploadURLResponse {
-  required string url = 1;
+  string url = 1;
 }
 
 message DeleteBlobRequest {
@@ -35,23 +35,23 @@ message DeleteBlobRequest {
 }
 
 message FetchDataRequest {
-  required string blob_key = 1;
-  required int64 start_index = 2;
-  required int64 end_index = 3;
+  string blob_key = 1;
+  int64 start_index = 2;
+  int64 end_index = 3;
 }
 
 message FetchDataResponse {
-  required bytes data = 1000 [ctype = CORD];
+  bytes data = 1000 [ctype = CORD];
 }
 
 message CloneBlobRequest {
-  required bytes blob_key = 1;
-  required bytes mime_type = 2;
-  required bytes target_app_id = 3;
+  bytes blob_key = 1;
+  bytes mime_type = 2;
+  bytes target_app_id = 3;
 }
 
 message CloneBlobResponse {
-  required bytes blob_key = 1;
+  bytes blob_key = 1;
 }
 
 message DecodeBlobKeyRequest {
@@ -63,9 +63,9 @@ message DecodeBlobKeyResponse {
 }
 
 message CreateEncodedGoogleStorageKeyRequest {
-  required string filename = 1;
+  string filename = 1;
 }
 
 message CreateEncodedGoogleStorageKeyResponse {
-  required string blob_key = 1;
+  string blob_key = 1;
 }
diff --git a/internal/capability/capability_service.pb.go b/internal/capability/capability_service.pb.go
index 220fccfa..a0b6a147 100644
--- a/internal/capability/capability_service.pb.go
+++ b/internal/capability/capability_service.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/capability/capability_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: capability_service.proto
 
 package capability
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 IsEnabledResponse_SummaryStatus int32
 
@@ -29,175 +31,294 @@ const (
 	IsEnabledResponse_UNKNOWN          IsEnabledResponse_SummaryStatus = 5
 )
 
-var IsEnabledResponse_SummaryStatus_name = map[int32]string{
-	0: "DEFAULT",
-	1: "ENABLED",
-	2: "SCHEDULED_FUTURE",
-	3: "SCHEDULED_NOW",
-	4: "DISABLED",
-	5: "UNKNOWN",
-}
-var IsEnabledResponse_SummaryStatus_value = map[string]int32{
-	"DEFAULT":          0,
-	"ENABLED":          1,
-	"SCHEDULED_FUTURE": 2,
-	"SCHEDULED_NOW":    3,
-	"DISABLED":         4,
-	"UNKNOWN":          5,
-}
+// Enum value maps for IsEnabledResponse_SummaryStatus.
+var (
+	IsEnabledResponse_SummaryStatus_name = map[int32]string{
+		0: "DEFAULT",
+		1: "ENABLED",
+		2: "SCHEDULED_FUTURE",
+		3: "SCHEDULED_NOW",
+		4: "DISABLED",
+		5: "UNKNOWN",
+	}
+	IsEnabledResponse_SummaryStatus_value = map[string]int32{
+		"DEFAULT":          0,
+		"ENABLED":          1,
+		"SCHEDULED_FUTURE": 2,
+		"SCHEDULED_NOW":    3,
+		"DISABLED":         4,
+		"UNKNOWN":          5,
+	}
+)
 
 func (x IsEnabledResponse_SummaryStatus) Enum() *IsEnabledResponse_SummaryStatus {
 	p := new(IsEnabledResponse_SummaryStatus)
 	*p = x
 	return p
 }
+
 func (x IsEnabledResponse_SummaryStatus) String() string {
-	return proto.EnumName(IsEnabledResponse_SummaryStatus_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *IsEnabledResponse_SummaryStatus) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(IsEnabledResponse_SummaryStatus_value, data, "IsEnabledResponse_SummaryStatus")
-	if err != nil {
-		return err
-	}
-	*x = IsEnabledResponse_SummaryStatus(value)
-	return nil
-}
-func (IsEnabledResponse_SummaryStatus) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_capability_service_030277ff00db7e72, []int{1, 0}
+
+func (IsEnabledResponse_SummaryStatus) Descriptor() protoreflect.EnumDescriptor {
+	return file_capability_service_proto_enumTypes[0].Descriptor()
 }
 
-type IsEnabledRequest struct {
-	Package              *string  `protobuf:"bytes,1,req,name=package" json:"package,omitempty"`
-	Capability           []string `protobuf:"bytes,2,rep,name=capability" json:"capability,omitempty"`
-	Call                 []string `protobuf:"bytes,3,rep,name=call" json:"call,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (IsEnabledResponse_SummaryStatus) Type() protoreflect.EnumType {
+	return &file_capability_service_proto_enumTypes[0]
 }
 
-func (m *IsEnabledRequest) Reset()         { *m = IsEnabledRequest{} }
-func (m *IsEnabledRequest) String() string { return proto.CompactTextString(m) }
-func (*IsEnabledRequest) ProtoMessage()    {}
-func (*IsEnabledRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_capability_service_030277ff00db7e72, []int{0}
+func (x IsEnabledResponse_SummaryStatus) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *IsEnabledRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IsEnabledRequest.Unmarshal(m, b)
+
+// Deprecated: Use IsEnabledResponse_SummaryStatus.Descriptor instead.
+func (IsEnabledResponse_SummaryStatus) EnumDescriptor() ([]byte, []int) {
+	return file_capability_service_proto_rawDescGZIP(), []int{1, 0}
 }
-func (m *IsEnabledRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IsEnabledRequest.Marshal(b, m, deterministic)
+
+type IsEnabledRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Package    string   `protobuf:"bytes,1,opt,name=package,proto3" json:"package,omitempty"`
+	Capability []string `protobuf:"bytes,2,rep,name=capability,proto3" json:"capability,omitempty"`
+	Call       []string `protobuf:"bytes,3,rep,name=call,proto3" json:"call,omitempty"`
 }
-func (dst *IsEnabledRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IsEnabledRequest.Merge(dst, src)
+
+func (x *IsEnabledRequest) Reset() {
+	*x = IsEnabledRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_capability_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *IsEnabledRequest) XXX_Size() int {
-	return xxx_messageInfo_IsEnabledRequest.Size(m)
+
+func (x *IsEnabledRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *IsEnabledRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_IsEnabledRequest.DiscardUnknown(m)
+
+func (*IsEnabledRequest) ProtoMessage() {}
+
+func (x *IsEnabledRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_capability_service_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)
 }
 
-var xxx_messageInfo_IsEnabledRequest proto.InternalMessageInfo
+// Deprecated: Use IsEnabledRequest.ProtoReflect.Descriptor instead.
+func (*IsEnabledRequest) Descriptor() ([]byte, []int) {
+	return file_capability_service_proto_rawDescGZIP(), []int{0}
+}
 
-func (m *IsEnabledRequest) GetPackage() string {
-	if m != nil && m.Package != nil {
-		return *m.Package
+func (x *IsEnabledRequest) GetPackage() string {
+	if x != nil {
+		return x.Package
 	}
 	return ""
 }
 
-func (m *IsEnabledRequest) GetCapability() []string {
-	if m != nil {
-		return m.Capability
+func (x *IsEnabledRequest) GetCapability() []string {
+	if x != nil {
+		return x.Capability
 	}
 	return nil
 }
 
-func (m *IsEnabledRequest) GetCall() []string {
-	if m != nil {
-		return m.Call
+func (x *IsEnabledRequest) GetCall() []string {
+	if x != nil {
+		return x.Call
 	}
 	return nil
 }
 
 type IsEnabledResponse struct {
-	SummaryStatus        *IsEnabledResponse_SummaryStatus `protobuf:"varint,1,opt,name=summary_status,json=summaryStatus,enum=appengine.IsEnabledResponse_SummaryStatus" json:"summary_status,omitempty"`
-	TimeUntilScheduled   *int64                           `protobuf:"varint,2,opt,name=time_until_scheduled,json=timeUntilScheduled" json:"time_until_scheduled,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
-	XXX_unrecognized     []byte                           `json:"-"`
-	XXX_sizecache        int32                            `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *IsEnabledResponse) Reset()         { *m = IsEnabledResponse{} }
-func (m *IsEnabledResponse) String() string { return proto.CompactTextString(m) }
-func (*IsEnabledResponse) ProtoMessage()    {}
-func (*IsEnabledResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_capability_service_030277ff00db7e72, []int{1}
-}
-func (m *IsEnabledResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IsEnabledResponse.Unmarshal(m, b)
-}
-func (m *IsEnabledResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IsEnabledResponse.Marshal(b, m, deterministic)
+	SummaryStatus      *IsEnabledResponse_SummaryStatus `protobuf:"varint,1,opt,name=summary_status,json=summaryStatus,proto3,enum=appengine.IsEnabledResponse_SummaryStatus,oneof" json:"summary_status,omitempty"`
+	TimeUntilScheduled *int64                           `protobuf:"varint,2,opt,name=time_until_scheduled,json=timeUntilScheduled,proto3,oneof" json:"time_until_scheduled,omitempty"`
 }
-func (dst *IsEnabledResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IsEnabledResponse.Merge(dst, src)
+
+func (x *IsEnabledResponse) Reset() {
+	*x = IsEnabledResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_capability_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *IsEnabledResponse) XXX_Size() int {
-	return xxx_messageInfo_IsEnabledResponse.Size(m)
+
+func (x *IsEnabledResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *IsEnabledResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_IsEnabledResponse.DiscardUnknown(m)
+
+func (*IsEnabledResponse) ProtoMessage() {}
+
+func (x *IsEnabledResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_capability_service_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)
 }
 
-var xxx_messageInfo_IsEnabledResponse proto.InternalMessageInfo
+// Deprecated: Use IsEnabledResponse.ProtoReflect.Descriptor instead.
+func (*IsEnabledResponse) Descriptor() ([]byte, []int) {
+	return file_capability_service_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *IsEnabledResponse) GetSummaryStatus() IsEnabledResponse_SummaryStatus {
-	if m != nil && m.SummaryStatus != nil {
-		return *m.SummaryStatus
+func (x *IsEnabledResponse) GetSummaryStatus() IsEnabledResponse_SummaryStatus {
+	if x != nil && x.SummaryStatus != nil {
+		return *x.SummaryStatus
 	}
 	return IsEnabledResponse_DEFAULT
 }
 
-func (m *IsEnabledResponse) GetTimeUntilScheduled() int64 {
-	if m != nil && m.TimeUntilScheduled != nil {
-		return *m.TimeUntilScheduled
+func (x *IsEnabledResponse) GetTimeUntilScheduled() int64 {
+	if x != nil && x.TimeUntilScheduled != nil {
+		return *x.TimeUntilScheduled
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*IsEnabledRequest)(nil), "appengine.IsEnabledRequest")
-	proto.RegisterType((*IsEnabledResponse)(nil), "appengine.IsEnabledResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/capability/capability_service.proto", fileDescriptor_capability_service_030277ff00db7e72)
-}
-
-var fileDescriptor_capability_service_030277ff00db7e72 = []byte{
-	// 359 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0xd1, 0x8a, 0x9b, 0x40,
-	0x14, 0x86, 0xa3, 0xa6, 0xa4, 0x9e, 0x26, 0xc1, 0x0c, 0xb9, 0x90, 0xb6, 0x14, 0xf1, 0x4a, 0x7a,
-	0x61, 0x4a, 0xde, 0x20, 0x89, 0x86, 0x84, 0x06, 0x43, 0x35, 0x12, 0x28, 0x14, 0x3b, 0x31, 0x83,
-	0x95, 0x8e, 0xa3, 0xeb, 0x8c, 0x0b, 0x79, 0x82, 0x7d, 0xed, 0x45, 0x43, 0x8c, 0xcb, 0x2e, 0x7b,
-	0x77, 0xce, 0xf9, 0xf9, 0xfe, 0x99, 0x73, 0x7e, 0xd8, 0x24, 0x79, 0x9e, 0x50, 0x62, 0x27, 0x39,
-	0xc5, 0x2c, 0xb1, 0xf3, 0x32, 0x99, 0xe1, 0xa2, 0x20, 0x2c, 0x49, 0x19, 0x99, 0xa5, 0x4c, 0x90,
-	0x92, 0x61, 0x3a, 0x8b, 0x71, 0x81, 0x4f, 0x29, 0x4d, 0xc5, 0xa5, 0x53, 0x46, 0x9c, 0x94, 0x8f,
-	0x69, 0x4c, 0xec, 0xa2, 0xcc, 0x45, 0x8e, 0xd4, 0x96, 0x33, 0xff, 0x82, 0xb6, 0xe5, 0x2e, 0xc3,
-	0x27, 0x4a, 0xce, 0x3e, 0x79, 0xa8, 0x08, 0x17, 0x48, 0x87, 0x41, 0x81, 0xe3, 0xff, 0x38, 0x21,
-	0xba, 0x64, 0xc8, 0x96, 0xea, 0xdf, 0x5a, 0xf4, 0x0d, 0xe0, 0x6e, 0xaa, 0xcb, 0x86, 0x62, 0xa9,
-	0x7e, 0x67, 0x82, 0x10, 0xf4, 0x63, 0x4c, 0xa9, 0xae, 0x34, 0x4a, 0x53, 0x9b, 0x4f, 0x32, 0x4c,
-	0x3a, 0x4f, 0xf0, 0x22, 0x67, 0x9c, 0xa0, 0x5f, 0x30, 0xe6, 0x55, 0x96, 0xe1, 0xf2, 0x12, 0x71,
-	0x81, 0x45, 0xc5, 0x75, 0xc9, 0x90, 0xac, 0xf1, 0xfc, 0xbb, 0xdd, 0xfe, 0xcd, 0x7e, 0x45, 0xd9,
-	0xc1, 0x15, 0x09, 0x1a, 0xc2, 0x1f, 0xf1, 0x6e, 0x8b, 0x7e, 0xc0, 0x54, 0xa4, 0x19, 0x89, 0x2a,
-	0x26, 0x52, 0x1a, 0xf1, 0xf8, 0x1f, 0x39, 0x57, 0x94, 0x9c, 0x75, 0xd9, 0x90, 0x2c, 0xc5, 0x47,
-	0xb5, 0x16, 0xd6, 0x52, 0x70, 0x53, 0xcc, 0x0c, 0x46, 0x2f, 0x1c, 0xd1, 0x27, 0x18, 0x38, 0xee,
-	0x7a, 0x11, 0xee, 0x0e, 0x5a, 0xaf, 0x6e, 0x5c, 0x6f, 0xb1, 0xdc, 0xb9, 0x8e, 0x26, 0xa1, 0x29,
-	0x68, 0xc1, 0x6a, 0xe3, 0x3a, 0xe1, 0xce, 0x75, 0xa2, 0x75, 0x78, 0x08, 0x7d, 0x57, 0x93, 0xd1,
-	0x04, 0x46, 0xf7, 0xa9, 0xb7, 0x3f, 0x6a, 0x0a, 0x1a, 0xc2, 0x47, 0x67, 0x1b, 0x5c, 0xb1, 0x7e,
-	0xed, 0x11, 0x7a, 0x3f, 0xbd, 0xfd, 0xd1, 0xd3, 0x3e, 0xcc, 0xff, 0xc0, 0x64, 0xd5, 0xde, 0x2a,
-	0xb8, 0x26, 0x82, 0x36, 0xa0, 0xb6, 0x7b, 0xa2, 0x2f, 0x6f, 0x6f, 0xdf, 0xc4, 0xf2, 0xf9, 0xeb,
-	0x7b, 0xa7, 0x31, 0x7b, 0xcb, 0xe1, 0xef, 0x4e, 0x14, 0xcf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc0,
-	0x03, 0x26, 0x25, 0x2e, 0x02, 0x00, 0x00,
+var File_capability_service_proto protoreflect.FileDescriptor
+
+var file_capability_service_proto_rawDesc = []byte{
+	0x0a, 0x18, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0x60, 0x0a, 0x10, 0x49, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c,
+	0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x63,
+	0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b,
+	0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74,
+	0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c,
+	0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x09, 0x52, 0x04, 0x63, 0x61, 0x6c, 0x6c, 0x22, 0xbd, 0x02, 0x0a, 0x11, 0x49, 0x73, 0x45, 0x6e,
+	0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a,
+	0x0e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x49, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x6e,
+	0x74, 0x69, 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x6e, 0x74, 0x69, 0x6c,
+	0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x22, 0x6d, 0x0a, 0x0d,
+	0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a,
+	0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e,
+	0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x43, 0x48, 0x45, 0x44,
+	0x55, 0x4c, 0x45, 0x44, 0x5f, 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x10, 0x02, 0x12, 0x11, 0x0a,
+	0x0d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x5f, 0x4e, 0x4f, 0x57, 0x10, 0x03,
+	0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0b,
+	0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x42, 0x11, 0x0a, 0x0f, 0x5f,
+	0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x17,
+	0x0a, 0x15, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x5f, 0x73, 0x63,
+	0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x32, 0x5d, 0x0a, 0x11, 0x43, 0x61, 0x70, 0x61, 0x62,
+	0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x09,
+	0x49, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x49, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x63,
+	0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x33,
+}
+
+var (
+	file_capability_service_proto_rawDescOnce sync.Once
+	file_capability_service_proto_rawDescData = file_capability_service_proto_rawDesc
+)
+
+func file_capability_service_proto_rawDescGZIP() []byte {
+	file_capability_service_proto_rawDescOnce.Do(func() {
+		file_capability_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_capability_service_proto_rawDescData)
+	})
+	return file_capability_service_proto_rawDescData
+}
+
+var file_capability_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_capability_service_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_capability_service_proto_goTypes = []interface{}{
+	(IsEnabledResponse_SummaryStatus)(0), // 0: appengine.IsEnabledResponse.SummaryStatus
+	(*IsEnabledRequest)(nil),             // 1: appengine.IsEnabledRequest
+	(*IsEnabledResponse)(nil),            // 2: appengine.IsEnabledResponse
+}
+var file_capability_service_proto_depIdxs = []int32{
+	0, // 0: appengine.IsEnabledResponse.summary_status:type_name -> appengine.IsEnabledResponse.SummaryStatus
+	1, // 1: appengine.CapabilityService.IsEnabled:input_type -> appengine.IsEnabledRequest
+	2, // 2: appengine.CapabilityService.IsEnabled:output_type -> appengine.IsEnabledResponse
+	2, // [2:3] is the sub-list for method output_type
+	1, // [1:2] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_capability_service_proto_init() }
+func file_capability_service_proto_init() {
+	if File_capability_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_capability_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IsEnabledRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_capability_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IsEnabledResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_capability_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_capability_service_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_capability_service_proto_goTypes,
+		DependencyIndexes: file_capability_service_proto_depIdxs,
+		EnumInfos:         file_capability_service_proto_enumTypes,
+		MessageInfos:      file_capability_service_proto_msgTypes,
+	}.Build()
+	File_capability_service_proto = out.File
+	file_capability_service_proto_rawDesc = nil
+	file_capability_service_proto_goTypes = nil
+	file_capability_service_proto_depIdxs = nil
 }
diff --git a/internal/capability/capability_service.proto b/internal/capability/capability_service.proto
index 5660ab6e..195eee1f 100644
--- a/internal/capability/capability_service.proto
+++ b/internal/capability/capability_service.proto
@@ -1,10 +1,10 @@
-syntax = "proto2";
-option go_package = "capability";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/capability";
 
 package appengine;
 
 message IsEnabledRequest {
-  required string package = 1;
+  string package = 1;
   repeated string capability = 2;
   repeated string call = 3;
 }
diff --git a/internal/channel/channel_service.pb.go b/internal/channel/channel_service.pb.go
index ba31ea29..73e2fdc9 100644
--- a/internal/channel/channel_service.pb.go
+++ b/internal/channel/channel_service.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/channel/channel_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: channel_service.proto
 
 package channel
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 ChannelServiceError_ErrorCode int32
 
@@ -29,245 +31,403 @@ const (
 	ChannelServiceError_APPID_ALIAS_REQUIRED           ChannelServiceError_ErrorCode = 5
 )
 
-var ChannelServiceError_ErrorCode_name = map[int32]string{
-	0: "OK",
-	1: "INTERNAL_ERROR",
-	2: "INVALID_CHANNEL_KEY",
-	3: "BAD_MESSAGE",
-	4: "INVALID_CHANNEL_TOKEN_DURATION",
-	5: "APPID_ALIAS_REQUIRED",
-}
-var ChannelServiceError_ErrorCode_value = map[string]int32{
-	"OK":                             0,
-	"INTERNAL_ERROR":                 1,
-	"INVALID_CHANNEL_KEY":            2,
-	"BAD_MESSAGE":                    3,
-	"INVALID_CHANNEL_TOKEN_DURATION": 4,
-	"APPID_ALIAS_REQUIRED":           5,
-}
+// Enum value maps for ChannelServiceError_ErrorCode.
+var (
+	ChannelServiceError_ErrorCode_name = map[int32]string{
+		0: "OK",
+		1: "INTERNAL_ERROR",
+		2: "INVALID_CHANNEL_KEY",
+		3: "BAD_MESSAGE",
+		4: "INVALID_CHANNEL_TOKEN_DURATION",
+		5: "APPID_ALIAS_REQUIRED",
+	}
+	ChannelServiceError_ErrorCode_value = map[string]int32{
+		"OK":                             0,
+		"INTERNAL_ERROR":                 1,
+		"INVALID_CHANNEL_KEY":            2,
+		"BAD_MESSAGE":                    3,
+		"INVALID_CHANNEL_TOKEN_DURATION": 4,
+		"APPID_ALIAS_REQUIRED":           5,
+	}
+)
 
 func (x ChannelServiceError_ErrorCode) Enum() *ChannelServiceError_ErrorCode {
 	p := new(ChannelServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x ChannelServiceError_ErrorCode) String() string {
-	return proto.EnumName(ChannelServiceError_ErrorCode_name, int32(x))
-}
-func (x *ChannelServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(ChannelServiceError_ErrorCode_value, data, "ChannelServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = ChannelServiceError_ErrorCode(value)
-	return nil
-}
-func (ChannelServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_channel_service_a8d15e05b34664a9, []int{0, 0}
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type ChannelServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (ChannelServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_channel_service_proto_enumTypes[0].Descriptor()
 }
 
-func (m *ChannelServiceError) Reset()         { *m = ChannelServiceError{} }
-func (m *ChannelServiceError) String() string { return proto.CompactTextString(m) }
-func (*ChannelServiceError) ProtoMessage()    {}
-func (*ChannelServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_channel_service_a8d15e05b34664a9, []int{0}
+func (ChannelServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_channel_service_proto_enumTypes[0]
 }
-func (m *ChannelServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelServiceError.Unmarshal(m, b)
+
+func (x ChannelServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *ChannelServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelServiceError.Marshal(b, m, deterministic)
+
+// Deprecated: Use ChannelServiceError_ErrorCode.Descriptor instead.
+func (ChannelServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
+	return file_channel_service_proto_rawDescGZIP(), []int{0, 0}
 }
-func (dst *ChannelServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelServiceError.Merge(dst, src)
+
+type ChannelServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *ChannelServiceError) XXX_Size() int {
-	return xxx_messageInfo_ChannelServiceError.Size(m)
+
+func (x *ChannelServiceError) Reset() {
+	*x = ChannelServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_channel_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ChannelServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelServiceError.DiscardUnknown(m)
+
+func (x *ChannelServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ChannelServiceError proto.InternalMessageInfo
+func (*ChannelServiceError) ProtoMessage() {}
 
-type CreateChannelRequest struct {
-	ApplicationKey       *string  `protobuf:"bytes,1,req,name=application_key,json=applicationKey" json:"application_key,omitempty"`
-	DurationMinutes      *int32   `protobuf:"varint,2,opt,name=duration_minutes,json=durationMinutes" json:"duration_minutes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *ChannelServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_channel_service_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)
 }
 
-func (m *CreateChannelRequest) Reset()         { *m = CreateChannelRequest{} }
-func (m *CreateChannelRequest) String() string { return proto.CompactTextString(m) }
-func (*CreateChannelRequest) ProtoMessage()    {}
-func (*CreateChannelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_channel_service_a8d15e05b34664a9, []int{1}
-}
-func (m *CreateChannelRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateChannelRequest.Unmarshal(m, b)
+// Deprecated: Use ChannelServiceError.ProtoReflect.Descriptor instead.
+func (*ChannelServiceError) Descriptor() ([]byte, []int) {
+	return file_channel_service_proto_rawDescGZIP(), []int{0}
 }
-func (m *CreateChannelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateChannelRequest.Marshal(b, m, deterministic)
+
+type CreateChannelRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ApplicationKey  string `protobuf:"bytes,1,opt,name=application_key,json=applicationKey,proto3" json:"application_key,omitempty"`
+	DurationMinutes *int32 `protobuf:"varint,2,opt,name=duration_minutes,json=durationMinutes,proto3,oneof" json:"duration_minutes,omitempty"`
 }
-func (dst *CreateChannelRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateChannelRequest.Merge(dst, src)
+
+func (x *CreateChannelRequest) Reset() {
+	*x = CreateChannelRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_channel_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateChannelRequest) XXX_Size() int {
-	return xxx_messageInfo_CreateChannelRequest.Size(m)
+
+func (x *CreateChannelRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateChannelRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateChannelRequest.DiscardUnknown(m)
+
+func (*CreateChannelRequest) ProtoMessage() {}
+
+func (x *CreateChannelRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_channel_service_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)
 }
 
-var xxx_messageInfo_CreateChannelRequest proto.InternalMessageInfo
+// Deprecated: Use CreateChannelRequest.ProtoReflect.Descriptor instead.
+func (*CreateChannelRequest) Descriptor() ([]byte, []int) {
+	return file_channel_service_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *CreateChannelRequest) GetApplicationKey() string {
-	if m != nil && m.ApplicationKey != nil {
-		return *m.ApplicationKey
+func (x *CreateChannelRequest) GetApplicationKey() string {
+	if x != nil {
+		return x.ApplicationKey
 	}
 	return ""
 }
 
-func (m *CreateChannelRequest) GetDurationMinutes() int32 {
-	if m != nil && m.DurationMinutes != nil {
-		return *m.DurationMinutes
+func (x *CreateChannelRequest) GetDurationMinutes() int32 {
+	if x != nil && x.DurationMinutes != nil {
+		return *x.DurationMinutes
 	}
 	return 0
 }
 
 type CreateChannelResponse struct {
-	Token                *string  `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
-	DurationMinutes      *int32   `protobuf:"varint,3,opt,name=duration_minutes,json=durationMinutes" json:"duration_minutes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CreateChannelResponse) Reset()         { *m = CreateChannelResponse{} }
-func (m *CreateChannelResponse) String() string { return proto.CompactTextString(m) }
-func (*CreateChannelResponse) ProtoMessage()    {}
-func (*CreateChannelResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_channel_service_a8d15e05b34664a9, []int{2}
-}
-func (m *CreateChannelResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateChannelResponse.Unmarshal(m, b)
+	Token           *string `protobuf:"bytes,2,opt,name=token,proto3,oneof" json:"token,omitempty"`
+	DurationMinutes *int32  `protobuf:"varint,3,opt,name=duration_minutes,json=durationMinutes,proto3,oneof" json:"duration_minutes,omitempty"`
 }
-func (m *CreateChannelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateChannelResponse.Marshal(b, m, deterministic)
-}
-func (dst *CreateChannelResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateChannelResponse.Merge(dst, src)
+
+func (x *CreateChannelResponse) Reset() {
+	*x = CreateChannelResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_channel_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateChannelResponse) XXX_Size() int {
-	return xxx_messageInfo_CreateChannelResponse.Size(m)
+
+func (x *CreateChannelResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateChannelResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateChannelResponse.DiscardUnknown(m)
+
+func (*CreateChannelResponse) ProtoMessage() {}
+
+func (x *CreateChannelResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_channel_service_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)
 }
 
-var xxx_messageInfo_CreateChannelResponse proto.InternalMessageInfo
+// Deprecated: Use CreateChannelResponse.ProtoReflect.Descriptor instead.
+func (*CreateChannelResponse) Descriptor() ([]byte, []int) {
+	return file_channel_service_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *CreateChannelResponse) GetToken() string {
-	if m != nil && m.Token != nil {
-		return *m.Token
+func (x *CreateChannelResponse) GetToken() string {
+	if x != nil && x.Token != nil {
+		return *x.Token
 	}
 	return ""
 }
 
-func (m *CreateChannelResponse) GetDurationMinutes() int32 {
-	if m != nil && m.DurationMinutes != nil {
-		return *m.DurationMinutes
+func (x *CreateChannelResponse) GetDurationMinutes() int32 {
+	if x != nil && x.DurationMinutes != nil {
+		return *x.DurationMinutes
 	}
 	return 0
 }
 
 type SendMessageRequest struct {
-	ApplicationKey       *string  `protobuf:"bytes,1,req,name=application_key,json=applicationKey" json:"application_key,omitempty"`
-	Message              *string  `protobuf:"bytes,2,req,name=message" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *SendMessageRequest) Reset()         { *m = SendMessageRequest{} }
-func (m *SendMessageRequest) String() string { return proto.CompactTextString(m) }
-func (*SendMessageRequest) ProtoMessage()    {}
-func (*SendMessageRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_channel_service_a8d15e05b34664a9, []int{3}
-}
-func (m *SendMessageRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SendMessageRequest.Unmarshal(m, b)
+	ApplicationKey string `protobuf:"bytes,1,opt,name=application_key,json=applicationKey,proto3" json:"application_key,omitempty"`
+	Message        string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
 }
-func (m *SendMessageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SendMessageRequest.Marshal(b, m, deterministic)
-}
-func (dst *SendMessageRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SendMessageRequest.Merge(dst, src)
+
+func (x *SendMessageRequest) Reset() {
+	*x = SendMessageRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_channel_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SendMessageRequest) XXX_Size() int {
-	return xxx_messageInfo_SendMessageRequest.Size(m)
+
+func (x *SendMessageRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SendMessageRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SendMessageRequest.DiscardUnknown(m)
+
+func (*SendMessageRequest) ProtoMessage() {}
+
+func (x *SendMessageRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_channel_service_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)
 }
 
-var xxx_messageInfo_SendMessageRequest proto.InternalMessageInfo
+// Deprecated: Use SendMessageRequest.ProtoReflect.Descriptor instead.
+func (*SendMessageRequest) Descriptor() ([]byte, []int) {
+	return file_channel_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *SendMessageRequest) GetApplicationKey() string {
-	if m != nil && m.ApplicationKey != nil {
-		return *m.ApplicationKey
+func (x *SendMessageRequest) GetApplicationKey() string {
+	if x != nil {
+		return x.ApplicationKey
 	}
 	return ""
 }
 
-func (m *SendMessageRequest) GetMessage() string {
-	if m != nil && m.Message != nil {
-		return *m.Message
+func (x *SendMessageRequest) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*ChannelServiceError)(nil), "appengine.ChannelServiceError")
-	proto.RegisterType((*CreateChannelRequest)(nil), "appengine.CreateChannelRequest")
-	proto.RegisterType((*CreateChannelResponse)(nil), "appengine.CreateChannelResponse")
-	proto.RegisterType((*SendMessageRequest)(nil), "appengine.SendMessageRequest")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/channel/channel_service.proto", fileDescriptor_channel_service_a8d15e05b34664a9)
-}
-
-var fileDescriptor_channel_service_a8d15e05b34664a9 = []byte{
-	// 355 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0xcd, 0xee, 0xd2, 0x40,
-	0x14, 0xc5, 0x6d, 0xff, 0x22, 0xe9, 0x35, 0x81, 0x66, 0xc0, 0xd8, 0x95, 0x21, 0xdd, 0x88, 0x1b,
-	0x78, 0x86, 0xa1, 0x9d, 0x68, 0xd3, 0xd2, 0xe2, 0x14, 0xfc, 0xda, 0x4c, 0x26, 0x70, 0x53, 0x2b,
-	0x65, 0xa6, 0x4e, 0x8b, 0x09, 0x4f, 0xe1, 0x63, 0xf8, 0x9a, 0x26, 0x14, 0x88, 0x21, 0x6c, 0x5c,
-	0xcd, 0x9c, 0x93, 0xdf, 0x39, 0x33, 0x37, 0x17, 0x16, 0x85, 0xd6, 0x45, 0x85, 0xb3, 0x42, 0x57,
-	0x52, 0x15, 0x33, 0x6d, 0x8a, 0xb9, 0xac, 0x6b, 0x54, 0x45, 0xa9, 0x70, 0x5e, 0xaa, 0x16, 0x8d,
-	0x92, 0xd5, 0x7c, 0xfb, 0x5d, 0x2a, 0x85, 0xb7, 0x53, 0x34, 0x68, 0x7e, 0x95, 0x5b, 0x9c, 0xd5,
-	0x46, 0xb7, 0x9a, 0x38, 0xb7, 0x84, 0xff, 0xc7, 0x82, 0x51, 0xd0, 0x41, 0x79, 0xc7, 0x30, 0x63,
-	0xb4, 0xf1, 0x7f, 0x5b, 0xe0, 0x9c, 0x6f, 0x81, 0xde, 0x21, 0x79, 0x01, 0x76, 0x16, 0xbb, 0xcf,
-	0x08, 0x81, 0x41, 0x94, 0xae, 0x19, 0x4f, 0x69, 0x22, 0x18, 0xe7, 0x19, 0x77, 0x2d, 0xf2, 0x1a,
-	0x46, 0x51, 0xfa, 0x89, 0x26, 0x51, 0x28, 0x82, 0x0f, 0x34, 0x4d, 0x59, 0x22, 0x62, 0xf6, 0xd5,
-	0xb5, 0xc9, 0x10, 0x5e, 0x2e, 0x68, 0x28, 0x96, 0x2c, 0xcf, 0xe9, 0x7b, 0xe6, 0x3e, 0x11, 0x1f,
-	0xde, 0xdc, 0x93, 0xeb, 0x2c, 0x66, 0xa9, 0x08, 0x37, 0x9c, 0xae, 0xa3, 0x2c, 0x75, 0x9f, 0x13,
-	0x0f, 0xc6, 0x74, 0xb5, 0x8a, 0x42, 0x41, 0x93, 0x88, 0xe6, 0x82, 0xb3, 0x8f, 0x9b, 0x88, 0xb3,
-	0xd0, 0xed, 0xf9, 0x3f, 0x60, 0x1c, 0x18, 0x94, 0x2d, 0x5e, 0xbe, 0xcb, 0xf1, 0xe7, 0x11, 0x9b,
-	0x96, 0xbc, 0x85, 0xa1, 0xac, 0xeb, 0xaa, 0xdc, 0xca, 0xb6, 0xd4, 0x4a, 0xec, 0xf1, 0xe4, 0x59,
-	0x13, 0x7b, 0xea, 0xf0, 0xc1, 0x3f, 0x76, 0x8c, 0x27, 0xf2, 0x0e, 0xdc, 0xdd, 0xd1, 0x74, 0xd4,
-	0xa1, 0x54, 0xc7, 0x16, 0x1b, 0xcf, 0x9e, 0x58, 0xd3, 0x1e, 0x1f, 0x5e, 0xfd, 0x65, 0x67, 0xfb,
-	0x5f, 0xe0, 0xd5, 0xdd, 0x5b, 0x4d, 0xad, 0x55, 0x83, 0x64, 0x0c, 0xbd, 0x56, 0xef, 0x51, 0x9d,
-	0x83, 0x0e, 0xef, 0xc4, 0xc3, 0xe6, 0xa7, 0xc7, 0xcd, 0x9f, 0x81, 0xe4, 0xa8, 0x76, 0x4b, 0x6c,
-	0x1a, 0x59, 0xe0, 0x7f, 0xcf, 0xe0, 0x41, 0xff, 0xd0, 0x45, 0x3d, 0xfb, 0x0c, 0x5c, 0xe5, 0xc2,
-	0xf9, 0xd6, 0xbf, 0x2c, 0xfb, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe9, 0x0a, 0x77, 0x06, 0x23,
-	0x02, 0x00, 0x00,
+var File_channel_service_proto protoreflect.FileDescriptor
+
+var file_channel_service_proto_rawDesc = []byte{
+	0x0a, 0x15, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x8f, 0x01, 0x0a, 0x09, 0x45,
+	0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00,
+	0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52,
+	0x4f, 0x52, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f,
+	0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x02, 0x12, 0x0f, 0x0a,
+	0x0b, 0x42, 0x41, 0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x22,
+	0x0a, 0x1e, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45,
+	0x4c, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e,
+	0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x50, 0x49, 0x44, 0x5f, 0x41, 0x4c, 0x49, 0x41,
+	0x53, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x05, 0x22, 0x84, 0x01, 0x0a,
+	0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
+	0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x2e,
+	0x0a, 0x10, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74,
+	0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x75, 0x72, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x13,
+	0x0a, 0x11, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75,
+	0x74, 0x65, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a,
+	0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05,
+	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x64, 0x75, 0x72, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x05, 0x48, 0x01, 0x52, 0x0f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69,
+	0x6e, 0x75, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x6b,
+	0x65, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+	0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x22, 0x57, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a,
+	0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
+	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f,
+	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_channel_service_proto_rawDescOnce sync.Once
+	file_channel_service_proto_rawDescData = file_channel_service_proto_rawDesc
+)
+
+func file_channel_service_proto_rawDescGZIP() []byte {
+	file_channel_service_proto_rawDescOnce.Do(func() {
+		file_channel_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_channel_service_proto_rawDescData)
+	})
+	return file_channel_service_proto_rawDescData
+}
+
+var file_channel_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_channel_service_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_channel_service_proto_goTypes = []interface{}{
+	(ChannelServiceError_ErrorCode)(0), // 0: appengine.ChannelServiceError.ErrorCode
+	(*ChannelServiceError)(nil),        // 1: appengine.ChannelServiceError
+	(*CreateChannelRequest)(nil),       // 2: appengine.CreateChannelRequest
+	(*CreateChannelResponse)(nil),      // 3: appengine.CreateChannelResponse
+	(*SendMessageRequest)(nil),         // 4: appengine.SendMessageRequest
+}
+var file_channel_service_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_channel_service_proto_init() }
+func file_channel_service_proto_init() {
+	if File_channel_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_channel_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ChannelServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_channel_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateChannelRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_channel_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateChannelResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_channel_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SendMessageRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_channel_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_channel_service_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_channel_service_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   4,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_channel_service_proto_goTypes,
+		DependencyIndexes: file_channel_service_proto_depIdxs,
+		EnumInfos:         file_channel_service_proto_enumTypes,
+		MessageInfos:      file_channel_service_proto_msgTypes,
+	}.Build()
+	File_channel_service_proto = out.File
+	file_channel_service_proto_rawDesc = nil
+	file_channel_service_proto_goTypes = nil
+	file_channel_service_proto_depIdxs = nil
 }
diff --git a/internal/channel/channel_service.proto b/internal/channel/channel_service.proto
index 2b5a918c..bbbb7adb 100644
--- a/internal/channel/channel_service.proto
+++ b/internal/channel/channel_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "channel";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/channel";
 
 package appengine;
 
@@ -15,7 +15,7 @@ message ChannelServiceError {
 }
 
 message CreateChannelRequest {
-  required string application_key = 1;
+  string application_key = 1;
   optional int32 duration_minutes = 2;
 }
 
@@ -25,6 +25,6 @@ message CreateChannelResponse {
 }
 
 message SendMessageRequest {
-  required string application_key = 1;
-  required string message = 2;
+  string application_key = 1;
+  string message = 2;
 }
diff --git a/internal/datastore/datastore_v3.pb.go b/internal/datastore/datastore_v3.pb.go
index 2fb74828..862c1f2b 100644
--- a/internal/datastore/datastore_v3.pb.go
+++ b/internal/datastore/datastore_v3.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/datastore/datastore_v3.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: datastore_v3.proto
 
 package datastore
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 Property_Meaning int32
 
@@ -43,222 +45,284 @@ const (
 	Property_INDEX_VALUE      Property_Meaning = 18
 )
 
-var Property_Meaning_name = map[int32]string{
-	0:  "NO_MEANING",
-	14: "BLOB",
-	15: "TEXT",
-	16: "BYTESTRING",
-	1:  "ATOM_CATEGORY",
-	2:  "ATOM_LINK",
-	3:  "ATOM_TITLE",
-	4:  "ATOM_CONTENT",
-	5:  "ATOM_SUMMARY",
-	6:  "ATOM_AUTHOR",
-	7:  "GD_WHEN",
-	8:  "GD_EMAIL",
-	9:  "GEORSS_POINT",
-	10: "GD_IM",
-	11: "GD_PHONENUMBER",
-	12: "GD_POSTALADDRESS",
-	13: "GD_RATING",
-	17: "BLOBKEY",
-	19: "ENTITY_PROTO",
-	18: "INDEX_VALUE",
-}
-var Property_Meaning_value = map[string]int32{
-	"NO_MEANING":       0,
-	"BLOB":             14,
-	"TEXT":             15,
-	"BYTESTRING":       16,
-	"ATOM_CATEGORY":    1,
-	"ATOM_LINK":        2,
-	"ATOM_TITLE":       3,
-	"ATOM_CONTENT":     4,
-	"ATOM_SUMMARY":     5,
-	"ATOM_AUTHOR":      6,
-	"GD_WHEN":          7,
-	"GD_EMAIL":         8,
-	"GEORSS_POINT":     9,
-	"GD_IM":            10,
-	"GD_PHONENUMBER":   11,
-	"GD_POSTALADDRESS": 12,
-	"GD_RATING":        13,
-	"BLOBKEY":          17,
-	"ENTITY_PROTO":     19,
-	"INDEX_VALUE":      18,
-}
+// Enum value maps for Property_Meaning.
+var (
+	Property_Meaning_name = map[int32]string{
+		0:  "NO_MEANING",
+		14: "BLOB",
+		15: "TEXT",
+		16: "BYTESTRING",
+		1:  "ATOM_CATEGORY",
+		2:  "ATOM_LINK",
+		3:  "ATOM_TITLE",
+		4:  "ATOM_CONTENT",
+		5:  "ATOM_SUMMARY",
+		6:  "ATOM_AUTHOR",
+		7:  "GD_WHEN",
+		8:  "GD_EMAIL",
+		9:  "GEORSS_POINT",
+		10: "GD_IM",
+		11: "GD_PHONENUMBER",
+		12: "GD_POSTALADDRESS",
+		13: "GD_RATING",
+		17: "BLOBKEY",
+		19: "ENTITY_PROTO",
+		18: "INDEX_VALUE",
+	}
+	Property_Meaning_value = map[string]int32{
+		"NO_MEANING":       0,
+		"BLOB":             14,
+		"TEXT":             15,
+		"BYTESTRING":       16,
+		"ATOM_CATEGORY":    1,
+		"ATOM_LINK":        2,
+		"ATOM_TITLE":       3,
+		"ATOM_CONTENT":     4,
+		"ATOM_SUMMARY":     5,
+		"ATOM_AUTHOR":      6,
+		"GD_WHEN":          7,
+		"GD_EMAIL":         8,
+		"GEORSS_POINT":     9,
+		"GD_IM":            10,
+		"GD_PHONENUMBER":   11,
+		"GD_POSTALADDRESS": 12,
+		"GD_RATING":        13,
+		"BLOBKEY":          17,
+		"ENTITY_PROTO":     19,
+		"INDEX_VALUE":      18,
+	}
+)
 
 func (x Property_Meaning) Enum() *Property_Meaning {
 	p := new(Property_Meaning)
 	*p = x
 	return p
 }
+
 func (x Property_Meaning) String() string {
-	return proto.EnumName(Property_Meaning_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Property_Meaning) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Property_Meaning_value, data, "Property_Meaning")
-	if err != nil {
-		return err
-	}
-	*x = Property_Meaning(value)
-	return nil
+
+func (Property_Meaning) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[0].Descriptor()
+}
+
+func (Property_Meaning) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[0]
+}
+
+func (x Property_Meaning) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use Property_Meaning.Descriptor instead.
 func (Property_Meaning) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{2, 0}
+	return file_datastore_v3_proto_rawDescGZIP(), []int{2, 0}
 }
 
 type Property_FtsTokenizationOption int32
 
 const (
+	Property_NONE Property_FtsTokenizationOption = 0
 	Property_HTML Property_FtsTokenizationOption = 1
 	Property_ATOM Property_FtsTokenizationOption = 2
 )
 
-var Property_FtsTokenizationOption_name = map[int32]string{
-	1: "HTML",
-	2: "ATOM",
-}
-var Property_FtsTokenizationOption_value = map[string]int32{
-	"HTML": 1,
-	"ATOM": 2,
-}
+// Enum value maps for Property_FtsTokenizationOption.
+var (
+	Property_FtsTokenizationOption_name = map[int32]string{
+		0: "NONE",
+		1: "HTML",
+		2: "ATOM",
+	}
+	Property_FtsTokenizationOption_value = map[string]int32{
+		"NONE": 0,
+		"HTML": 1,
+		"ATOM": 2,
+	}
+)
 
 func (x Property_FtsTokenizationOption) Enum() *Property_FtsTokenizationOption {
 	p := new(Property_FtsTokenizationOption)
 	*p = x
 	return p
 }
+
 func (x Property_FtsTokenizationOption) String() string {
-	return proto.EnumName(Property_FtsTokenizationOption_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Property_FtsTokenizationOption) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Property_FtsTokenizationOption_value, data, "Property_FtsTokenizationOption")
-	if err != nil {
-		return err
-	}
-	*x = Property_FtsTokenizationOption(value)
-	return nil
+
+func (Property_FtsTokenizationOption) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[1].Descriptor()
+}
+
+func (Property_FtsTokenizationOption) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[1]
+}
+
+func (x Property_FtsTokenizationOption) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use Property_FtsTokenizationOption.Descriptor instead.
 func (Property_FtsTokenizationOption) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{2, 1}
+	return file_datastore_v3_proto_rawDescGZIP(), []int{2, 1}
 }
 
 type EntityProto_Kind int32
 
 const (
+	EntityProto_NONE       EntityProto_Kind = 0
 	EntityProto_GD_CONTACT EntityProto_Kind = 1
 	EntityProto_GD_EVENT   EntityProto_Kind = 2
 	EntityProto_GD_MESSAGE EntityProto_Kind = 3
 )
 
-var EntityProto_Kind_name = map[int32]string{
-	1: "GD_CONTACT",
-	2: "GD_EVENT",
-	3: "GD_MESSAGE",
-}
-var EntityProto_Kind_value = map[string]int32{
-	"GD_CONTACT": 1,
-	"GD_EVENT":   2,
-	"GD_MESSAGE": 3,
-}
+// Enum value maps for EntityProto_Kind.
+var (
+	EntityProto_Kind_name = map[int32]string{
+		0: "NONE",
+		1: "GD_CONTACT",
+		2: "GD_EVENT",
+		3: "GD_MESSAGE",
+	}
+	EntityProto_Kind_value = map[string]int32{
+		"NONE":       0,
+		"GD_CONTACT": 1,
+		"GD_EVENT":   2,
+		"GD_MESSAGE": 3,
+	}
+)
 
 func (x EntityProto_Kind) Enum() *EntityProto_Kind {
 	p := new(EntityProto_Kind)
 	*p = x
 	return p
 }
+
 func (x EntityProto_Kind) String() string {
-	return proto.EnumName(EntityProto_Kind_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *EntityProto_Kind) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(EntityProto_Kind_value, data, "EntityProto_Kind")
-	if err != nil {
-		return err
-	}
-	*x = EntityProto_Kind(value)
-	return nil
+
+func (EntityProto_Kind) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[2].Descriptor()
+}
+
+func (EntityProto_Kind) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[2]
+}
+
+func (x EntityProto_Kind) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use EntityProto_Kind.Descriptor instead.
 func (EntityProto_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{6, 0}
+	return file_datastore_v3_proto_rawDescGZIP(), []int{6, 0}
 }
 
-type Index_Property_Direction int32
+type Index_PropertyType_Direction int32
 
 const (
-	Index_Property_ASCENDING  Index_Property_Direction = 1
-	Index_Property_DESCENDING Index_Property_Direction = 2
+	Index_PropertyType_NONE       Index_PropertyType_Direction = 0
+	Index_PropertyType_ASCENDING  Index_PropertyType_Direction = 1
+	Index_PropertyType_DESCENDING Index_PropertyType_Direction = 2
 )
 
-var Index_Property_Direction_name = map[int32]string{
-	1: "ASCENDING",
-	2: "DESCENDING",
-}
-var Index_Property_Direction_value = map[string]int32{
-	"ASCENDING":  1,
-	"DESCENDING": 2,
-}
+// Enum value maps for Index_PropertyType_Direction.
+var (
+	Index_PropertyType_Direction_name = map[int32]string{
+		0: "NONE",
+		1: "ASCENDING",
+		2: "DESCENDING",
+	}
+	Index_PropertyType_Direction_value = map[string]int32{
+		"NONE":       0,
+		"ASCENDING":  1,
+		"DESCENDING": 2,
+	}
+)
 
-func (x Index_Property_Direction) Enum() *Index_Property_Direction {
-	p := new(Index_Property_Direction)
+func (x Index_PropertyType_Direction) Enum() *Index_PropertyType_Direction {
+	p := new(Index_PropertyType_Direction)
 	*p = x
 	return p
 }
-func (x Index_Property_Direction) String() string {
-	return proto.EnumName(Index_Property_Direction_name, int32(x))
+
+func (x Index_PropertyType_Direction) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Index_Property_Direction) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Index_Property_Direction_value, data, "Index_Property_Direction")
-	if err != nil {
-		return err
-	}
-	*x = Index_Property_Direction(value)
-	return nil
+
+func (Index_PropertyType_Direction) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[3].Descriptor()
+}
+
+func (Index_PropertyType_Direction) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[3]
+}
+
+func (x Index_PropertyType_Direction) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (Index_Property_Direction) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{8, 0, 0}
+
+// Deprecated: Use Index_PropertyType_Direction.Descriptor instead.
+func (Index_PropertyType_Direction) EnumDescriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{8, 0, 0}
 }
 
 type CompositeIndex_State int32
 
 const (
+	CompositeIndex_NONE       CompositeIndex_State = 0
 	CompositeIndex_WRITE_ONLY CompositeIndex_State = 1
 	CompositeIndex_READ_WRITE CompositeIndex_State = 2
 	CompositeIndex_DELETED    CompositeIndex_State = 3
 	CompositeIndex_ERROR      CompositeIndex_State = 4
 )
 
-var CompositeIndex_State_name = map[int32]string{
-	1: "WRITE_ONLY",
-	2: "READ_WRITE",
-	3: "DELETED",
-	4: "ERROR",
-}
-var CompositeIndex_State_value = map[string]int32{
-	"WRITE_ONLY": 1,
-	"READ_WRITE": 2,
-	"DELETED":    3,
-	"ERROR":      4,
-}
+// Enum value maps for CompositeIndex_State.
+var (
+	CompositeIndex_State_name = map[int32]string{
+		0: "NONE",
+		1: "WRITE_ONLY",
+		2: "READ_WRITE",
+		3: "DELETED",
+		4: "ERROR",
+	}
+	CompositeIndex_State_value = map[string]int32{
+		"NONE":       0,
+		"WRITE_ONLY": 1,
+		"READ_WRITE": 2,
+		"DELETED":    3,
+		"ERROR":      4,
+	}
+)
 
 func (x CompositeIndex_State) Enum() *CompositeIndex_State {
 	p := new(CompositeIndex_State)
 	*p = x
 	return p
 }
+
 func (x CompositeIndex_State) String() string {
-	return proto.EnumName(CompositeIndex_State_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *CompositeIndex_State) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(CompositeIndex_State_value, data, "CompositeIndex_State")
-	if err != nil {
-		return err
-	}
-	*x = CompositeIndex_State(value)
-	return nil
+
+func (CompositeIndex_State) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[4].Descriptor()
+}
+
+func (CompositeIndex_State) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[4]
 }
+
+func (x CompositeIndex_State) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use CompositeIndex_State.Descriptor instead.
 func (CompositeIndex_State) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{9, 0}
+	return file_datastore_v3_proto_rawDescGZIP(), []int{9, 0}
 }
 
 type Snapshot_Status int32
@@ -268,164 +332,214 @@ const (
 	Snapshot_ACTIVE   Snapshot_Status = 1
 )
 
-var Snapshot_Status_name = map[int32]string{
-	0: "INACTIVE",
-	1: "ACTIVE",
-}
-var Snapshot_Status_value = map[string]int32{
-	"INACTIVE": 0,
-	"ACTIVE":   1,
-}
+// Enum value maps for Snapshot_Status.
+var (
+	Snapshot_Status_name = map[int32]string{
+		0: "INACTIVE",
+		1: "ACTIVE",
+	}
+	Snapshot_Status_value = map[string]int32{
+		"INACTIVE": 0,
+		"ACTIVE":   1,
+	}
+)
 
 func (x Snapshot_Status) Enum() *Snapshot_Status {
 	p := new(Snapshot_Status)
 	*p = x
 	return p
 }
+
 func (x Snapshot_Status) String() string {
-	return proto.EnumName(Snapshot_Status_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Snapshot_Status) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Snapshot_Status_value, data, "Snapshot_Status")
-	if err != nil {
-		return err
-	}
-	*x = Snapshot_Status(value)
-	return nil
+
+func (Snapshot_Status) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[5].Descriptor()
 }
+
+func (Snapshot_Status) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[5]
+}
+
+func (x Snapshot_Status) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Snapshot_Status.Descriptor instead.
 func (Snapshot_Status) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{12, 0}
+	return file_datastore_v3_proto_rawDescGZIP(), []int{12, 0}
 }
 
 type Query_Hint int32
 
 const (
+	Query_NONE           Query_Hint = 0
 	Query_ORDER_FIRST    Query_Hint = 1
 	Query_ANCESTOR_FIRST Query_Hint = 2
 	Query_FILTER_FIRST   Query_Hint = 3
 )
 
-var Query_Hint_name = map[int32]string{
-	1: "ORDER_FIRST",
-	2: "ANCESTOR_FIRST",
-	3: "FILTER_FIRST",
-}
-var Query_Hint_value = map[string]int32{
-	"ORDER_FIRST":    1,
-	"ANCESTOR_FIRST": 2,
-	"FILTER_FIRST":   3,
-}
+// Enum value maps for Query_Hint.
+var (
+	Query_Hint_name = map[int32]string{
+		0: "NONE",
+		1: "ORDER_FIRST",
+		2: "ANCESTOR_FIRST",
+		3: "FILTER_FIRST",
+	}
+	Query_Hint_value = map[string]int32{
+		"NONE":           0,
+		"ORDER_FIRST":    1,
+		"ANCESTOR_FIRST": 2,
+		"FILTER_FIRST":   3,
+	}
+)
 
 func (x Query_Hint) Enum() *Query_Hint {
 	p := new(Query_Hint)
 	*p = x
 	return p
 }
+
 func (x Query_Hint) String() string {
-	return proto.EnumName(Query_Hint_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Query_Hint) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Query_Hint_value, data, "Query_Hint")
-	if err != nil {
-		return err
-	}
-	*x = Query_Hint(value)
-	return nil
+
+func (Query_Hint) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[6].Descriptor()
+}
+
+func (Query_Hint) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[6]
 }
+
+func (x Query_Hint) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Query_Hint.Descriptor instead.
 func (Query_Hint) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15, 0}
+	return file_datastore_v3_proto_rawDescGZIP(), []int{15, 0}
 }
 
-type Query_Filter_Operator int32
+type Query_FilterType_Operator int32
 
 const (
-	Query_Filter_LESS_THAN             Query_Filter_Operator = 1
-	Query_Filter_LESS_THAN_OR_EQUAL    Query_Filter_Operator = 2
-	Query_Filter_GREATER_THAN          Query_Filter_Operator = 3
-	Query_Filter_GREATER_THAN_OR_EQUAL Query_Filter_Operator = 4
-	Query_Filter_EQUAL                 Query_Filter_Operator = 5
-	Query_Filter_IN                    Query_Filter_Operator = 6
-	Query_Filter_EXISTS                Query_Filter_Operator = 7
+	Query_FilterType_NONE                  Query_FilterType_Operator = 0
+	Query_FilterType_LESS_THAN             Query_FilterType_Operator = 1
+	Query_FilterType_LESS_THAN_OR_EQUAL    Query_FilterType_Operator = 2
+	Query_FilterType_GREATER_THAN          Query_FilterType_Operator = 3
+	Query_FilterType_GREATER_THAN_OR_EQUAL Query_FilterType_Operator = 4
+	Query_FilterType_EQUAL                 Query_FilterType_Operator = 5
+	Query_FilterType_IN                    Query_FilterType_Operator = 6
+	Query_FilterType_EXISTS                Query_FilterType_Operator = 7
+)
+
+// Enum value maps for Query_FilterType_Operator.
+var (
+	Query_FilterType_Operator_name = map[int32]string{
+		0: "NONE",
+		1: "LESS_THAN",
+		2: "LESS_THAN_OR_EQUAL",
+		3: "GREATER_THAN",
+		4: "GREATER_THAN_OR_EQUAL",
+		5: "EQUAL",
+		6: "IN",
+		7: "EXISTS",
+	}
+	Query_FilterType_Operator_value = map[string]int32{
+		"NONE":                  0,
+		"LESS_THAN":             1,
+		"LESS_THAN_OR_EQUAL":    2,
+		"GREATER_THAN":          3,
+		"GREATER_THAN_OR_EQUAL": 4,
+		"EQUAL":                 5,
+		"IN":                    6,
+		"EXISTS":                7,
+	}
 )
 
-var Query_Filter_Operator_name = map[int32]string{
-	1: "LESS_THAN",
-	2: "LESS_THAN_OR_EQUAL",
-	3: "GREATER_THAN",
-	4: "GREATER_THAN_OR_EQUAL",
-	5: "EQUAL",
-	6: "IN",
-	7: "EXISTS",
-}
-var Query_Filter_Operator_value = map[string]int32{
-	"LESS_THAN":             1,
-	"LESS_THAN_OR_EQUAL":    2,
-	"GREATER_THAN":          3,
-	"GREATER_THAN_OR_EQUAL": 4,
-	"EQUAL":                 5,
-	"IN":                    6,
-	"EXISTS":                7,
-}
-
-func (x Query_Filter_Operator) Enum() *Query_Filter_Operator {
-	p := new(Query_Filter_Operator)
+func (x Query_FilterType_Operator) Enum() *Query_FilterType_Operator {
+	p := new(Query_FilterType_Operator)
 	*p = x
 	return p
 }
-func (x Query_Filter_Operator) String() string {
-	return proto.EnumName(Query_Filter_Operator_name, int32(x))
+
+func (x Query_FilterType_Operator) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Query_Filter_Operator) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Query_Filter_Operator_value, data, "Query_Filter_Operator")
-	if err != nil {
-		return err
-	}
-	*x = Query_Filter_Operator(value)
-	return nil
+
+func (Query_FilterType_Operator) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[7].Descriptor()
+}
+
+func (Query_FilterType_Operator) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[7]
 }
-func (Query_Filter_Operator) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15, 0, 0}
+
+func (x Query_FilterType_Operator) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Query_FilterType_Operator.Descriptor instead.
+func (Query_FilterType_Operator) EnumDescriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{15, 0, 0}
 }
 
-type Query_Order_Direction int32
+type Query_OrderType_Direction int32
 
 const (
-	Query_Order_ASCENDING  Query_Order_Direction = 1
-	Query_Order_DESCENDING Query_Order_Direction = 2
+	Query_OrderType_NONE       Query_OrderType_Direction = 0
+	Query_OrderType_ASCENDING  Query_OrderType_Direction = 1
+	Query_OrderType_DESCENDING Query_OrderType_Direction = 2
 )
 
-var Query_Order_Direction_name = map[int32]string{
-	1: "ASCENDING",
-	2: "DESCENDING",
-}
-var Query_Order_Direction_value = map[string]int32{
-	"ASCENDING":  1,
-	"DESCENDING": 2,
-}
+// Enum value maps for Query_OrderType_Direction.
+var (
+	Query_OrderType_Direction_name = map[int32]string{
+		0: "NONE",
+		1: "ASCENDING",
+		2: "DESCENDING",
+	}
+	Query_OrderType_Direction_value = map[string]int32{
+		"NONE":       0,
+		"ASCENDING":  1,
+		"DESCENDING": 2,
+	}
+)
 
-func (x Query_Order_Direction) Enum() *Query_Order_Direction {
-	p := new(Query_Order_Direction)
+func (x Query_OrderType_Direction) Enum() *Query_OrderType_Direction {
+	p := new(Query_OrderType_Direction)
 	*p = x
 	return p
 }
-func (x Query_Order_Direction) String() string {
-	return proto.EnumName(Query_Order_Direction_name, int32(x))
+
+func (x Query_OrderType_Direction) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Query_Order_Direction) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Query_Order_Direction_value, data, "Query_Order_Direction")
-	if err != nil {
-		return err
-	}
-	*x = Query_Order_Direction(value)
-	return nil
+
+func (Query_OrderType_Direction) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[8].Descriptor()
 }
-func (Query_Order_Direction) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15, 1, 0}
+
+func (Query_OrderType_Direction) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[8]
+}
+
+func (x Query_OrderType_Direction) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Query_OrderType_Direction.Descriptor instead.
+func (Query_OrderType_Direction) EnumDescriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{15, 1, 0}
 }
 
 type Error_ErrorCode int32
 
 const (
+	Error_NONE                         Error_ErrorCode = 0
 	Error_BAD_REQUEST                  Error_ErrorCode = 1
 	Error_CONCURRENT_TRANSACTION       Error_ErrorCode = 2
 	Error_INTERNAL_ERROR               Error_ErrorCode = 3
@@ -439,51 +553,63 @@ const (
 	Error_SAFE_TIME_TOO_OLD            Error_ErrorCode = 11
 )
 
-var Error_ErrorCode_name = map[int32]string{
-	1:  "BAD_REQUEST",
-	2:  "CONCURRENT_TRANSACTION",
-	3:  "INTERNAL_ERROR",
-	4:  "NEED_INDEX",
-	5:  "TIMEOUT",
-	6:  "PERMISSION_DENIED",
-	7:  "BIGTABLE_ERROR",
-	8:  "COMMITTED_BUT_STILL_APPLYING",
-	9:  "CAPABILITY_DISABLED",
-	10: "TRY_ALTERNATE_BACKEND",
-	11: "SAFE_TIME_TOO_OLD",
-}
-var Error_ErrorCode_value = map[string]int32{
-	"BAD_REQUEST":                  1,
-	"CONCURRENT_TRANSACTION":       2,
-	"INTERNAL_ERROR":               3,
-	"NEED_INDEX":                   4,
-	"TIMEOUT":                      5,
-	"PERMISSION_DENIED":            6,
-	"BIGTABLE_ERROR":               7,
-	"COMMITTED_BUT_STILL_APPLYING": 8,
-	"CAPABILITY_DISABLED":          9,
-	"TRY_ALTERNATE_BACKEND":        10,
-	"SAFE_TIME_TOO_OLD":            11,
-}
+// Enum value maps for Error_ErrorCode.
+var (
+	Error_ErrorCode_name = map[int32]string{
+		0:  "NONE",
+		1:  "BAD_REQUEST",
+		2:  "CONCURRENT_TRANSACTION",
+		3:  "INTERNAL_ERROR",
+		4:  "NEED_INDEX",
+		5:  "TIMEOUT",
+		6:  "PERMISSION_DENIED",
+		7:  "BIGTABLE_ERROR",
+		8:  "COMMITTED_BUT_STILL_APPLYING",
+		9:  "CAPABILITY_DISABLED",
+		10: "TRY_ALTERNATE_BACKEND",
+		11: "SAFE_TIME_TOO_OLD",
+	}
+	Error_ErrorCode_value = map[string]int32{
+		"NONE":                         0,
+		"BAD_REQUEST":                  1,
+		"CONCURRENT_TRANSACTION":       2,
+		"INTERNAL_ERROR":               3,
+		"NEED_INDEX":                   4,
+		"TIMEOUT":                      5,
+		"PERMISSION_DENIED":            6,
+		"BIGTABLE_ERROR":               7,
+		"COMMITTED_BUT_STILL_APPLYING": 8,
+		"CAPABILITY_DISABLED":          9,
+		"TRY_ALTERNATE_BACKEND":        10,
+		"SAFE_TIME_TOO_OLD":            11,
+	}
+)
 
 func (x Error_ErrorCode) Enum() *Error_ErrorCode {
 	p := new(Error_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x Error_ErrorCode) String() string {
-	return proto.EnumName(Error_ErrorCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Error_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Error_ErrorCode_value, data, "Error_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = Error_ErrorCode(value)
-	return nil
+
+func (Error_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[9].Descriptor()
+}
+
+func (Error_ErrorCode) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[9]
+}
+
+func (x Error_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use Error_ErrorCode.Descriptor instead.
 func (Error_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{19, 0}
+	return file_datastore_v3_proto_rawDescGZIP(), []int{19, 0}
 }
 
 type PutRequest_AutoIdPolicy int32
@@ -493,33 +619,43 @@ const (
 	PutRequest_SEQUENTIAL PutRequest_AutoIdPolicy = 1
 )
 
-var PutRequest_AutoIdPolicy_name = map[int32]string{
-	0: "CURRENT",
-	1: "SEQUENTIAL",
-}
-var PutRequest_AutoIdPolicy_value = map[string]int32{
-	"CURRENT":    0,
-	"SEQUENTIAL": 1,
-}
+// Enum value maps for PutRequest_AutoIdPolicy.
+var (
+	PutRequest_AutoIdPolicy_name = map[int32]string{
+		0: "CURRENT",
+		1: "SEQUENTIAL",
+	}
+	PutRequest_AutoIdPolicy_value = map[string]int32{
+		"CURRENT":    0,
+		"SEQUENTIAL": 1,
+	}
+)
 
 func (x PutRequest_AutoIdPolicy) Enum() *PutRequest_AutoIdPolicy {
 	p := new(PutRequest_AutoIdPolicy)
 	*p = x
 	return p
 }
+
 func (x PutRequest_AutoIdPolicy) String() string {
-	return proto.EnumName(PutRequest_AutoIdPolicy_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *PutRequest_AutoIdPolicy) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(PutRequest_AutoIdPolicy_value, data, "PutRequest_AutoIdPolicy")
-	if err != nil {
-		return err
-	}
-	*x = PutRequest_AutoIdPolicy(value)
-	return nil
+
+func (PutRequest_AutoIdPolicy) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[10].Descriptor()
+}
+
+func (PutRequest_AutoIdPolicy) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[10]
 }
+
+func (x PutRequest_AutoIdPolicy) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PutRequest_AutoIdPolicy.Descriptor instead.
 func (PutRequest_AutoIdPolicy) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{23, 0}
+	return file_datastore_v3_proto_rawDescGZIP(), []int{23, 0}
 }
 
 type BeginTransactionRequest_TransactionMode int32
@@ -530,3838 +666,5750 @@ const (
 	BeginTransactionRequest_READ_WRITE BeginTransactionRequest_TransactionMode = 2
 )
 
-var BeginTransactionRequest_TransactionMode_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "READ_ONLY",
-	2: "READ_WRITE",
-}
-var BeginTransactionRequest_TransactionMode_value = map[string]int32{
-	"UNKNOWN":    0,
-	"READ_ONLY":  1,
-	"READ_WRITE": 2,
-}
+// Enum value maps for BeginTransactionRequest_TransactionMode.
+var (
+	BeginTransactionRequest_TransactionMode_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "READ_ONLY",
+		2: "READ_WRITE",
+	}
+	BeginTransactionRequest_TransactionMode_value = map[string]int32{
+		"UNKNOWN":    0,
+		"READ_ONLY":  1,
+		"READ_WRITE": 2,
+	}
+)
 
 func (x BeginTransactionRequest_TransactionMode) Enum() *BeginTransactionRequest_TransactionMode {
 	p := new(BeginTransactionRequest_TransactionMode)
 	*p = x
 	return p
 }
+
 func (x BeginTransactionRequest_TransactionMode) String() string {
-	return proto.EnumName(BeginTransactionRequest_TransactionMode_name, int32(x))
-}
-func (x *BeginTransactionRequest_TransactionMode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(BeginTransactionRequest_TransactionMode_value, data, "BeginTransactionRequest_TransactionMode")
-	if err != nil {
-		return err
-	}
-	*x = BeginTransactionRequest_TransactionMode(value)
-	return nil
-}
-func (BeginTransactionRequest_TransactionMode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{36, 0}
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type Action struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (BeginTransactionRequest_TransactionMode) Descriptor() protoreflect.EnumDescriptor {
+	return file_datastore_v3_proto_enumTypes[11].Descriptor()
 }
 
-func (m *Action) Reset()         { *m = Action{} }
-func (m *Action) String() string { return proto.CompactTextString(m) }
-func (*Action) ProtoMessage()    {}
-func (*Action) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{0}
+func (BeginTransactionRequest_TransactionMode) Type() protoreflect.EnumType {
+	return &file_datastore_v3_proto_enumTypes[11]
 }
-func (m *Action) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Action.Unmarshal(m, b)
+
+func (x BeginTransactionRequest_TransactionMode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *Action) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Action.Marshal(b, m, deterministic)
+
+// Deprecated: Use BeginTransactionRequest_TransactionMode.Descriptor instead.
+func (BeginTransactionRequest_TransactionMode) EnumDescriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{36, 0}
 }
-func (dst *Action) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Action.Merge(dst, src)
+
+type Action struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *Action) XXX_Size() int {
-	return xxx_messageInfo_Action.Size(m)
+
+func (x *Action) Reset() {
+	*x = Action{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Action) XXX_DiscardUnknown() {
-	xxx_messageInfo_Action.DiscardUnknown(m)
+
+func (x *Action) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_Action proto.InternalMessageInfo
+func (*Action) ProtoMessage() {}
 
-type PropertyValue struct {
-	Int64Value           *int64                        `protobuf:"varint,1,opt,name=int64Value" json:"int64Value,omitempty"`
-	BooleanValue         *bool                         `protobuf:"varint,2,opt,name=booleanValue" json:"booleanValue,omitempty"`
-	StringValue          *string                       `protobuf:"bytes,3,opt,name=stringValue" json:"stringValue,omitempty"`
-	DoubleValue          *float64                      `protobuf:"fixed64,4,opt,name=doubleValue" json:"doubleValue,omitempty"`
-	Pointvalue           *PropertyValue_PointValue     `protobuf:"group,5,opt,name=PointValue,json=pointvalue" json:"pointvalue,omitempty"`
-	Uservalue            *PropertyValue_UserValue      `protobuf:"group,8,opt,name=UserValue,json=uservalue" json:"uservalue,omitempty"`
-	Referencevalue       *PropertyValue_ReferenceValue `protobuf:"group,12,opt,name=ReferenceValue,json=referencevalue" json:"referencevalue,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
-	XXX_unrecognized     []byte                        `json:"-"`
-	XXX_sizecache        int32                         `json:"-"`
-}
-
-func (m *PropertyValue) Reset()         { *m = PropertyValue{} }
-func (m *PropertyValue) String() string { return proto.CompactTextString(m) }
-func (*PropertyValue) ProtoMessage()    {}
-func (*PropertyValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{1}
+func (x *Action) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
-func (m *PropertyValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PropertyValue.Unmarshal(m, b)
+
+// Deprecated: Use Action.ProtoReflect.Descriptor instead.
+func (*Action) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{0}
 }
-func (m *PropertyValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PropertyValue.Marshal(b, m, deterministic)
+
+type PropertyValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Int64Value     *int64                            `protobuf:"varint,1,opt,name=int64Value,proto3,oneof" json:"int64Value,omitempty"`
+	BooleanValue   *bool                             `protobuf:"varint,2,opt,name=booleanValue,proto3,oneof" json:"booleanValue,omitempty"`
+	StringValue    *string                           `protobuf:"bytes,3,opt,name=stringValue,proto3,oneof" json:"stringValue,omitempty"`
+	DoubleValue    *float64                          `protobuf:"fixed64,4,opt,name=doubleValue,proto3,oneof" json:"doubleValue,omitempty"`
+	PointValue     *PropertyValue_PointValueType     `protobuf:"bytes,5,opt,name=PointValue,proto3,oneof" json:"PointValue,omitempty"`
+	UserValue      *PropertyValue_UserValueType      `protobuf:"bytes,8,opt,name=UserValue,proto3,oneof" json:"UserValue,omitempty"`
+	ReferenceValue *PropertyValue_ReferenceValueType `protobuf:"bytes,12,opt,name=ReferenceValue,proto3,oneof" json:"ReferenceValue,omitempty"`
 }
-func (dst *PropertyValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PropertyValue.Merge(dst, src)
+
+func (x *PropertyValue) Reset() {
+	*x = PropertyValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PropertyValue) XXX_Size() int {
-	return xxx_messageInfo_PropertyValue.Size(m)
+
+func (x *PropertyValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *PropertyValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_PropertyValue.DiscardUnknown(m)
+
+func (*PropertyValue) ProtoMessage() {}
+
+func (x *PropertyValue) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_PropertyValue proto.InternalMessageInfo
+// Deprecated: Use PropertyValue.ProtoReflect.Descriptor instead.
+func (*PropertyValue) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *PropertyValue) GetInt64Value() int64 {
-	if m != nil && m.Int64Value != nil {
-		return *m.Int64Value
+func (x *PropertyValue) GetInt64Value() int64 {
+	if x != nil && x.Int64Value != nil {
+		return *x.Int64Value
 	}
 	return 0
 }
 
-func (m *PropertyValue) GetBooleanValue() bool {
-	if m != nil && m.BooleanValue != nil {
-		return *m.BooleanValue
+func (x *PropertyValue) GetBooleanValue() bool {
+	if x != nil && x.BooleanValue != nil {
+		return *x.BooleanValue
 	}
 	return false
 }
 
-func (m *PropertyValue) GetStringValue() string {
-	if m != nil && m.StringValue != nil {
-		return *m.StringValue
+func (x *PropertyValue) GetStringValue() string {
+	if x != nil && x.StringValue != nil {
+		return *x.StringValue
 	}
 	return ""
 }
 
-func (m *PropertyValue) GetDoubleValue() float64 {
-	if m != nil && m.DoubleValue != nil {
-		return *m.DoubleValue
+func (x *PropertyValue) GetDoubleValue() float64 {
+	if x != nil && x.DoubleValue != nil {
+		return *x.DoubleValue
 	}
 	return 0
 }
 
-func (m *PropertyValue) GetPointvalue() *PropertyValue_PointValue {
-	if m != nil {
-		return m.Pointvalue
+func (x *PropertyValue) GetPointValue() *PropertyValue_PointValueType {
+	if x != nil {
+		return x.PointValue
 	}
 	return nil
 }
 
-func (m *PropertyValue) GetUservalue() *PropertyValue_UserValue {
-	if m != nil {
-		return m.Uservalue
+func (x *PropertyValue) GetUserValue() *PropertyValue_UserValueType {
+	if x != nil {
+		return x.UserValue
 	}
 	return nil
 }
 
-func (m *PropertyValue) GetReferencevalue() *PropertyValue_ReferenceValue {
-	if m != nil {
-		return m.Referencevalue
+func (x *PropertyValue) GetReferenceValue() *PropertyValue_ReferenceValueType {
+	if x != nil {
+		return x.ReferenceValue
 	}
 	return nil
 }
 
-type PropertyValue_PointValue struct {
-	X                    *float64 `protobuf:"fixed64,6,req,name=x" json:"x,omitempty"`
-	Y                    *float64 `protobuf:"fixed64,7,req,name=y" json:"y,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type Property struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *PropertyValue_PointValue) Reset()         { *m = PropertyValue_PointValue{} }
-func (m *PropertyValue_PointValue) String() string { return proto.CompactTextString(m) }
-func (*PropertyValue_PointValue) ProtoMessage()    {}
-func (*PropertyValue_PointValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{1, 0}
-}
-func (m *PropertyValue_PointValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PropertyValue_PointValue.Unmarshal(m, b)
-}
-func (m *PropertyValue_PointValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PropertyValue_PointValue.Marshal(b, m, deterministic)
+	Meaning               *Property_Meaning               `protobuf:"varint,1,opt,name=meaning,proto3,enum=appengine.Property_Meaning,oneof" json:"meaning,omitempty"`
+	MeaningUri            *string                         `protobuf:"bytes,2,opt,name=meaning_uri,json=meaningUri,proto3,oneof" json:"meaning_uri,omitempty"`
+	Name                  string                          `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+	Value                 *PropertyValue                  `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"`
+	Multiple              bool                            `protobuf:"varint,4,opt,name=multiple,proto3" json:"multiple,omitempty"`
+	Searchable            *bool                           `protobuf:"varint,6,opt,name=searchable,proto3,oneof" json:"searchable,omitempty"`
+	FtsTokenizationOption *Property_FtsTokenizationOption `protobuf:"varint,8,opt,name=fts_tokenization_option,json=ftsTokenizationOption,proto3,enum=appengine.Property_FtsTokenizationOption,oneof" json:"fts_tokenization_option,omitempty"`
+	Locale                *string                         `protobuf:"bytes,9,opt,name=locale,proto3,oneof" json:"locale,omitempty"`
 }
-func (dst *PropertyValue_PointValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PropertyValue_PointValue.Merge(dst, src)
-}
-func (m *PropertyValue_PointValue) XXX_Size() int {
-	return xxx_messageInfo_PropertyValue_PointValue.Size(m)
-}
-func (m *PropertyValue_PointValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_PropertyValue_PointValue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PropertyValue_PointValue proto.InternalMessageInfo
 
-func (m *PropertyValue_PointValue) GetX() float64 {
-	if m != nil && m.X != nil {
-		return *m.X
+func (x *Property) Reset() {
+	*x = Property{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (m *PropertyValue_PointValue) GetY() float64 {
-	if m != nil && m.Y != nil {
-		return *m.Y
-	}
-	return 0
+func (x *Property) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-type PropertyValue_UserValue struct {
-	Email                *string  `protobuf:"bytes,9,req,name=email" json:"email,omitempty"`
-	AuthDomain           *string  `protobuf:"bytes,10,req,name=auth_domain,json=authDomain" json:"auth_domain,omitempty"`
-	Nickname             *string  `protobuf:"bytes,11,opt,name=nickname" json:"nickname,omitempty"`
-	FederatedIdentity    *string  `protobuf:"bytes,21,opt,name=federated_identity,json=federatedIdentity" json:"federated_identity,omitempty"`
-	FederatedProvider    *string  `protobuf:"bytes,22,opt,name=federated_provider,json=federatedProvider" json:"federated_provider,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+func (*Property) ProtoMessage() {}
 
-func (m *PropertyValue_UserValue) Reset()         { *m = PropertyValue_UserValue{} }
-func (m *PropertyValue_UserValue) String() string { return proto.CompactTextString(m) }
-func (*PropertyValue_UserValue) ProtoMessage()    {}
-func (*PropertyValue_UserValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{1, 1}
-}
-func (m *PropertyValue_UserValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PropertyValue_UserValue.Unmarshal(m, b)
-}
-func (m *PropertyValue_UserValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PropertyValue_UserValue.Marshal(b, m, deterministic)
-}
-func (dst *PropertyValue_UserValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PropertyValue_UserValue.Merge(dst, src)
-}
-func (m *PropertyValue_UserValue) XXX_Size() int {
-	return xxx_messageInfo_PropertyValue_UserValue.Size(m)
-}
-func (m *PropertyValue_UserValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_PropertyValue_UserValue.DiscardUnknown(m)
+func (x *Property) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_PropertyValue_UserValue proto.InternalMessageInfo
-
-func (m *PropertyValue_UserValue) GetEmail() string {
-	if m != nil && m.Email != nil {
-		return *m.Email
-	}
-	return ""
+// Deprecated: Use Property.ProtoReflect.Descriptor instead.
+func (*Property) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *PropertyValue_UserValue) GetAuthDomain() string {
-	if m != nil && m.AuthDomain != nil {
-		return *m.AuthDomain
+func (x *Property) GetMeaning() Property_Meaning {
+	if x != nil && x.Meaning != nil {
+		return *x.Meaning
 	}
-	return ""
+	return Property_NO_MEANING
 }
 
-func (m *PropertyValue_UserValue) GetNickname() string {
-	if m != nil && m.Nickname != nil {
-		return *m.Nickname
+func (x *Property) GetMeaningUri() string {
+	if x != nil && x.MeaningUri != nil {
+		return *x.MeaningUri
 	}
 	return ""
 }
 
-func (m *PropertyValue_UserValue) GetFederatedIdentity() string {
-	if m != nil && m.FederatedIdentity != nil {
-		return *m.FederatedIdentity
+func (x *Property) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *PropertyValue_UserValue) GetFederatedProvider() string {
-	if m != nil && m.FederatedProvider != nil {
-		return *m.FederatedProvider
+func (x *Property) GetValue() *PropertyValue {
+	if x != nil {
+		return x.Value
 	}
-	return ""
+	return nil
 }
 
-type PropertyValue_ReferenceValue struct {
-	App                  *string                                     `protobuf:"bytes,13,req,name=app" json:"app,omitempty"`
-	NameSpace            *string                                     `protobuf:"bytes,20,opt,name=name_space,json=nameSpace" json:"name_space,omitempty"`
-	Pathelement          []*PropertyValue_ReferenceValue_PathElement `protobuf:"group,14,rep,name=PathElement,json=pathelement" json:"pathelement,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                    `json:"-"`
-	XXX_unrecognized     []byte                                      `json:"-"`
-	XXX_sizecache        int32                                       `json:"-"`
+func (x *Property) GetMultiple() bool {
+	if x != nil {
+		return x.Multiple
+	}
+	return false
 }
 
-func (m *PropertyValue_ReferenceValue) Reset()         { *m = PropertyValue_ReferenceValue{} }
-func (m *PropertyValue_ReferenceValue) String() string { return proto.CompactTextString(m) }
-func (*PropertyValue_ReferenceValue) ProtoMessage()    {}
-func (*PropertyValue_ReferenceValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{1, 2}
-}
-func (m *PropertyValue_ReferenceValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PropertyValue_ReferenceValue.Unmarshal(m, b)
-}
-func (m *PropertyValue_ReferenceValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PropertyValue_ReferenceValue.Marshal(b, m, deterministic)
-}
-func (dst *PropertyValue_ReferenceValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PropertyValue_ReferenceValue.Merge(dst, src)
-}
-func (m *PropertyValue_ReferenceValue) XXX_Size() int {
-	return xxx_messageInfo_PropertyValue_ReferenceValue.Size(m)
-}
-func (m *PropertyValue_ReferenceValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_PropertyValue_ReferenceValue.DiscardUnknown(m)
+func (x *Property) GetSearchable() bool {
+	if x != nil && x.Searchable != nil {
+		return *x.Searchable
+	}
+	return false
 }
 
-var xxx_messageInfo_PropertyValue_ReferenceValue proto.InternalMessageInfo
-
-func (m *PropertyValue_ReferenceValue) GetApp() string {
-	if m != nil && m.App != nil {
-		return *m.App
+func (x *Property) GetFtsTokenizationOption() Property_FtsTokenizationOption {
+	if x != nil && x.FtsTokenizationOption != nil {
+		return *x.FtsTokenizationOption
 	}
-	return ""
+	return Property_NONE
 }
 
-func (m *PropertyValue_ReferenceValue) GetNameSpace() string {
-	if m != nil && m.NameSpace != nil {
-		return *m.NameSpace
+func (x *Property) GetLocale() string {
+	if x != nil && x.Locale != nil {
+		return *x.Locale
 	}
 	return ""
 }
 
-func (m *PropertyValue_ReferenceValue) GetPathelement() []*PropertyValue_ReferenceValue_PathElement {
-	if m != nil {
-		return m.Pathelement
-	}
-	return nil
-}
+type Path struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-type PropertyValue_ReferenceValue_PathElement struct {
-	Type                 *string  `protobuf:"bytes,15,req,name=type" json:"type,omitempty"`
-	Id                   *int64   `protobuf:"varint,16,opt,name=id" json:"id,omitempty"`
-	Name                 *string  `protobuf:"bytes,17,opt,name=name" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Element []*Path_ElementType `protobuf:"bytes,1,rep,name=Element,proto3" json:"Element,omitempty"`
 }
 
-func (m *PropertyValue_ReferenceValue_PathElement) Reset() {
-	*m = PropertyValue_ReferenceValue_PathElement{}
-}
-func (m *PropertyValue_ReferenceValue_PathElement) String() string { return proto.CompactTextString(m) }
-func (*PropertyValue_ReferenceValue_PathElement) ProtoMessage()    {}
-func (*PropertyValue_ReferenceValue_PathElement) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{1, 2, 0}
-}
-func (m *PropertyValue_ReferenceValue_PathElement) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PropertyValue_ReferenceValue_PathElement.Unmarshal(m, b)
-}
-func (m *PropertyValue_ReferenceValue_PathElement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PropertyValue_ReferenceValue_PathElement.Marshal(b, m, deterministic)
-}
-func (dst *PropertyValue_ReferenceValue_PathElement) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PropertyValue_ReferenceValue_PathElement.Merge(dst, src)
-}
-func (m *PropertyValue_ReferenceValue_PathElement) XXX_Size() int {
-	return xxx_messageInfo_PropertyValue_ReferenceValue_PathElement.Size(m)
+func (x *Path) Reset() {
+	*x = Path{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PropertyValue_ReferenceValue_PathElement) XXX_DiscardUnknown() {
-	xxx_messageInfo_PropertyValue_ReferenceValue_PathElement.DiscardUnknown(m)
+
+func (x *Path) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_PropertyValue_ReferenceValue_PathElement proto.InternalMessageInfo
+func (*Path) ProtoMessage() {}
 
-func (m *PropertyValue_ReferenceValue_PathElement) GetType() string {
-	if m != nil && m.Type != nil {
-		return *m.Type
+func (x *Path) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 ""
+	return mi.MessageOf(x)
 }
 
-func (m *PropertyValue_ReferenceValue_PathElement) GetId() int64 {
-	if m != nil && m.Id != nil {
-		return *m.Id
-	}
-	return 0
+// Deprecated: Use Path.ProtoReflect.Descriptor instead.
+func (*Path) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *PropertyValue_ReferenceValue_PathElement) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *Path) GetElement() []*Path_ElementType {
+	if x != nil {
+		return x.Element
 	}
-	return ""
+	return nil
 }
 
-type Property struct {
-	Meaning               *Property_Meaning               `protobuf:"varint,1,opt,name=meaning,enum=appengine.Property_Meaning,def=0" json:"meaning,omitempty"`
-	MeaningUri            *string                         `protobuf:"bytes,2,opt,name=meaning_uri,json=meaningUri" json:"meaning_uri,omitempty"`
-	Name                  *string                         `protobuf:"bytes,3,req,name=name" json:"name,omitempty"`
-	Value                 *PropertyValue                  `protobuf:"bytes,5,req,name=value" json:"value,omitempty"`
-	Multiple              *bool                           `protobuf:"varint,4,req,name=multiple" json:"multiple,omitempty"`
-	Searchable            *bool                           `protobuf:"varint,6,opt,name=searchable,def=0" json:"searchable,omitempty"`
-	FtsTokenizationOption *Property_FtsTokenizationOption `protobuf:"varint,8,opt,name=fts_tokenization_option,json=ftsTokenizationOption,enum=appengine.Property_FtsTokenizationOption" json:"fts_tokenization_option,omitempty"`
-	Locale                *string                         `protobuf:"bytes,9,opt,name=locale,def=en" json:"locale,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{}                        `json:"-"`
-	XXX_unrecognized      []byte                          `json:"-"`
-	XXX_sizecache         int32                           `json:"-"`
-}
-
-func (m *Property) Reset()         { *m = Property{} }
-func (m *Property) String() string { return proto.CompactTextString(m) }
-func (*Property) ProtoMessage()    {}
-func (*Property) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{2}
-}
-func (m *Property) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Property.Unmarshal(m, b)
-}
-func (m *Property) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Property.Marshal(b, m, deterministic)
-}
-func (dst *Property) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Property.Merge(dst, src)
-}
-func (m *Property) XXX_Size() int {
-	return xxx_messageInfo_Property.Size(m)
+type Reference struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	App       string  `protobuf:"bytes,13,opt,name=app,proto3" json:"app,omitempty"`
+	NameSpace *string `protobuf:"bytes,20,opt,name=name_space,json=nameSpace,proto3,oneof" json:"name_space,omitempty"`
+	Path      *Path   `protobuf:"bytes,14,opt,name=path,proto3" json:"path,omitempty"`
 }
-func (m *Property) XXX_DiscardUnknown() {
-	xxx_messageInfo_Property.DiscardUnknown(m)
+
+func (x *Reference) Reset() {
+	*x = Reference{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-var xxx_messageInfo_Property proto.InternalMessageInfo
+func (x *Reference) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
 
-const Default_Property_Meaning Property_Meaning = Property_NO_MEANING
-const Default_Property_Searchable bool = false
-const Default_Property_Locale string = "en"
+func (*Reference) ProtoMessage() {}
 
-func (m *Property) GetMeaning() Property_Meaning {
-	if m != nil && m.Meaning != nil {
-		return *m.Meaning
+func (x *Reference) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 Default_Property_Meaning
+	return mi.MessageOf(x)
 }
 
-func (m *Property) GetMeaningUri() string {
-	if m != nil && m.MeaningUri != nil {
-		return *m.MeaningUri
+// Deprecated: Use Reference.ProtoReflect.Descriptor instead.
+func (*Reference) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *Reference) GetApp() string {
+	if x != nil {
+		return x.App
 	}
 	return ""
 }
 
-func (m *Property) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *Reference) GetNameSpace() string {
+	if x != nil && x.NameSpace != nil {
+		return *x.NameSpace
 	}
 	return ""
 }
 
-func (m *Property) GetValue() *PropertyValue {
-	if m != nil {
-		return m.Value
+func (x *Reference) GetPath() *Path {
+	if x != nil {
+		return x.Path
 	}
 	return nil
 }
 
-func (m *Property) GetMultiple() bool {
-	if m != nil && m.Multiple != nil {
-		return *m.Multiple
-	}
-	return false
-}
-
-func (m *Property) GetSearchable() bool {
-	if m != nil && m.Searchable != nil {
-		return *m.Searchable
-	}
-	return Default_Property_Searchable
-}
+type User struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Property) GetFtsTokenizationOption() Property_FtsTokenizationOption {
-	if m != nil && m.FtsTokenizationOption != nil {
-		return *m.FtsTokenizationOption
-	}
-	return Property_HTML
+	Email             string  `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"`
+	AuthDomain        string  `protobuf:"bytes,2,opt,name=auth_domain,json=authDomain,proto3" json:"auth_domain,omitempty"`
+	Nickname          *string `protobuf:"bytes,3,opt,name=nickname,proto3,oneof" json:"nickname,omitempty"`
+	FederatedIdentity *string `protobuf:"bytes,6,opt,name=federated_identity,json=federatedIdentity,proto3,oneof" json:"federated_identity,omitempty"`
+	FederatedProvider *string `protobuf:"bytes,7,opt,name=federated_provider,json=federatedProvider,proto3,oneof" json:"federated_provider,omitempty"`
 }
 
-func (m *Property) GetLocale() string {
-	if m != nil && m.Locale != nil {
-		return *m.Locale
+func (x *User) Reset() {
+	*x = User{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return Default_Property_Locale
-}
-
-type Path struct {
-	Element              []*Path_Element `protobuf:"group,1,rep,name=Element,json=element" json:"element,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
 }
 
-func (m *Path) Reset()         { *m = Path{} }
-func (m *Path) String() string { return proto.CompactTextString(m) }
-func (*Path) ProtoMessage()    {}
-func (*Path) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{3}
-}
-func (m *Path) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Path.Unmarshal(m, b)
-}
-func (m *Path) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Path.Marshal(b, m, deterministic)
-}
-func (dst *Path) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Path.Merge(dst, src)
-}
-func (m *Path) XXX_Size() int {
-	return xxx_messageInfo_Path.Size(m)
-}
-func (m *Path) XXX_DiscardUnknown() {
-	xxx_messageInfo_Path.DiscardUnknown(m)
+func (x *User) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_Path proto.InternalMessageInfo
+func (*User) ProtoMessage() {}
 
-func (m *Path) GetElement() []*Path_Element {
-	if m != nil {
-		return m.Element
+func (x *User) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 nil
-}
-
-type Path_Element struct {
-	Type                 *string  `protobuf:"bytes,2,req,name=type" json:"type,omitempty"`
-	Id                   *int64   `protobuf:"varint,3,opt,name=id" json:"id,omitempty"`
-	Name                 *string  `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	return mi.MessageOf(x)
 }
 
-func (m *Path_Element) Reset()         { *m = Path_Element{} }
-func (m *Path_Element) String() string { return proto.CompactTextString(m) }
-func (*Path_Element) ProtoMessage()    {}
-func (*Path_Element) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{3, 0}
-}
-func (m *Path_Element) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Path_Element.Unmarshal(m, b)
-}
-func (m *Path_Element) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Path_Element.Marshal(b, m, deterministic)
-}
-func (dst *Path_Element) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Path_Element.Merge(dst, src)
-}
-func (m *Path_Element) XXX_Size() int {
-	return xxx_messageInfo_Path_Element.Size(m)
-}
-func (m *Path_Element) XXX_DiscardUnknown() {
-	xxx_messageInfo_Path_Element.DiscardUnknown(m)
+// Deprecated: Use User.ProtoReflect.Descriptor instead.
+func (*User) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{5}
 }
 
-var xxx_messageInfo_Path_Element proto.InternalMessageInfo
-
-func (m *Path_Element) GetType() string {
-	if m != nil && m.Type != nil {
-		return *m.Type
+func (x *User) GetEmail() string {
+	if x != nil {
+		return x.Email
 	}
 	return ""
 }
 
-func (m *Path_Element) GetId() int64 {
-	if m != nil && m.Id != nil {
-		return *m.Id
-	}
-	return 0
-}
-
-func (m *Path_Element) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *User) GetAuthDomain() string {
+	if x != nil {
+		return x.AuthDomain
 	}
 	return ""
 }
 
-type Reference struct {
-	App                  *string  `protobuf:"bytes,13,req,name=app" json:"app,omitempty"`
-	NameSpace            *string  `protobuf:"bytes,20,opt,name=name_space,json=nameSpace" json:"name_space,omitempty"`
-	Path                 *Path    `protobuf:"bytes,14,req,name=path" json:"path,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Reference) Reset()         { *m = Reference{} }
-func (m *Reference) String() string { return proto.CompactTextString(m) }
-func (*Reference) ProtoMessage()    {}
-func (*Reference) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{4}
-}
-func (m *Reference) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Reference.Unmarshal(m, b)
-}
-func (m *Reference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Reference.Marshal(b, m, deterministic)
-}
-func (dst *Reference) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Reference.Merge(dst, src)
-}
-func (m *Reference) XXX_Size() int {
-	return xxx_messageInfo_Reference.Size(m)
-}
-func (m *Reference) XXX_DiscardUnknown() {
-	xxx_messageInfo_Reference.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Reference proto.InternalMessageInfo
-
-func (m *Reference) GetApp() string {
-	if m != nil && m.App != nil {
-		return *m.App
+func (x *User) GetNickname() string {
+	if x != nil && x.Nickname != nil {
+		return *x.Nickname
 	}
 	return ""
 }
 
-func (m *Reference) GetNameSpace() string {
-	if m != nil && m.NameSpace != nil {
-		return *m.NameSpace
+func (x *User) GetFederatedIdentity() string {
+	if x != nil && x.FederatedIdentity != nil {
+		return *x.FederatedIdentity
 	}
 	return ""
 }
 
-func (m *Reference) GetPath() *Path {
-	if m != nil {
-		return m.Path
+func (x *User) GetFederatedProvider() string {
+	if x != nil && x.FederatedProvider != nil {
+		return *x.FederatedProvider
 	}
-	return nil
-}
-
-type User struct {
-	Email                *string  `protobuf:"bytes,1,req,name=email" json:"email,omitempty"`
-	AuthDomain           *string  `protobuf:"bytes,2,req,name=auth_domain,json=authDomain" json:"auth_domain,omitempty"`
-	Nickname             *string  `protobuf:"bytes,3,opt,name=nickname" json:"nickname,omitempty"`
-	FederatedIdentity    *string  `protobuf:"bytes,6,opt,name=federated_identity,json=federatedIdentity" json:"federated_identity,omitempty"`
-	FederatedProvider    *string  `protobuf:"bytes,7,opt,name=federated_provider,json=federatedProvider" json:"federated_provider,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *User) Reset()         { *m = User{} }
-func (m *User) String() string { return proto.CompactTextString(m) }
-func (*User) ProtoMessage()    {}
-func (*User) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{5}
-}
-func (m *User) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_User.Unmarshal(m, b)
-}
-func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_User.Marshal(b, m, deterministic)
-}
-func (dst *User) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_User.Merge(dst, src)
-}
-func (m *User) XXX_Size() int {
-	return xxx_messageInfo_User.Size(m)
-}
-func (m *User) XXX_DiscardUnknown() {
-	xxx_messageInfo_User.DiscardUnknown(m)
+	return ""
 }
 
-var xxx_messageInfo_User proto.InternalMessageInfo
+type EntityProto struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *User) GetEmail() string {
-	if m != nil && m.Email != nil {
-		return *m.Email
-	}
-	return ""
+	Key         *Reference        `protobuf:"bytes,13,opt,name=key,proto3" json:"key,omitempty"`
+	EntityGroup *Path             `protobuf:"bytes,16,opt,name=entity_group,json=entityGroup,proto3" json:"entity_group,omitempty"`
+	Owner       *User             `protobuf:"bytes,17,opt,name=owner,proto3,oneof" json:"owner,omitempty"`
+	Kind        *EntityProto_Kind `protobuf:"varint,4,opt,name=kind,proto3,enum=appengine.EntityProto_Kind,oneof" json:"kind,omitempty"`
+	KindUri     *string           `protobuf:"bytes,5,opt,name=kind_uri,json=kindUri,proto3,oneof" json:"kind_uri,omitempty"`
+	Property    []*Property       `protobuf:"bytes,14,rep,name=property,proto3" json:"property,omitempty"`
+	RawProperty []*Property       `protobuf:"bytes,15,rep,name=raw_property,json=rawProperty,proto3" json:"raw_property,omitempty"`
+	Rank        *int32            `protobuf:"varint,18,opt,name=rank,proto3,oneof" json:"rank,omitempty"`
 }
 
-func (m *User) GetAuthDomain() string {
-	if m != nil && m.AuthDomain != nil {
-		return *m.AuthDomain
+func (x *EntityProto) Reset() {
+	*x = EntityProto{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-func (m *User) GetNickname() string {
-	if m != nil && m.Nickname != nil {
-		return *m.Nickname
-	}
-	return ""
+func (x *EntityProto) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *User) GetFederatedIdentity() string {
-	if m != nil && m.FederatedIdentity != nil {
-		return *m.FederatedIdentity
-	}
-	return ""
-}
+func (*EntityProto) ProtoMessage() {}
 
-func (m *User) GetFederatedProvider() string {
-	if m != nil && m.FederatedProvider != nil {
-		return *m.FederatedProvider
+func (x *EntityProto) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 ""
+	return mi.MessageOf(x)
 }
 
-type EntityProto struct {
-	Key                  *Reference        `protobuf:"bytes,13,req,name=key" json:"key,omitempty"`
-	EntityGroup          *Path             `protobuf:"bytes,16,req,name=entity_group,json=entityGroup" json:"entity_group,omitempty"`
-	Owner                *User             `protobuf:"bytes,17,opt,name=owner" json:"owner,omitempty"`
-	Kind                 *EntityProto_Kind `protobuf:"varint,4,opt,name=kind,enum=appengine.EntityProto_Kind" json:"kind,omitempty"`
-	KindUri              *string           `protobuf:"bytes,5,opt,name=kind_uri,json=kindUri" json:"kind_uri,omitempty"`
-	Property             []*Property       `protobuf:"bytes,14,rep,name=property" json:"property,omitempty"`
-	RawProperty          []*Property       `protobuf:"bytes,15,rep,name=raw_property,json=rawProperty" json:"raw_property,omitempty"`
-	Rank                 *int32            `protobuf:"varint,18,opt,name=rank" json:"rank,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *EntityProto) Reset()         { *m = EntityProto{} }
-func (m *EntityProto) String() string { return proto.CompactTextString(m) }
-func (*EntityProto) ProtoMessage()    {}
+// Deprecated: Use EntityProto.ProtoReflect.Descriptor instead.
 func (*EntityProto) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{6}
+	return file_datastore_v3_proto_rawDescGZIP(), []int{6}
 }
-func (m *EntityProto) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EntityProto.Unmarshal(m, b)
-}
-func (m *EntityProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EntityProto.Marshal(b, m, deterministic)
-}
-func (dst *EntityProto) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EntityProto.Merge(dst, src)
-}
-func (m *EntityProto) XXX_Size() int {
-	return xxx_messageInfo_EntityProto.Size(m)
-}
-func (m *EntityProto) XXX_DiscardUnknown() {
-	xxx_messageInfo_EntityProto.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EntityProto proto.InternalMessageInfo
 
-func (m *EntityProto) GetKey() *Reference {
-	if m != nil {
-		return m.Key
+func (x *EntityProto) GetKey() *Reference {
+	if x != nil {
+		return x.Key
 	}
 	return nil
 }
 
-func (m *EntityProto) GetEntityGroup() *Path {
-	if m != nil {
-		return m.EntityGroup
+func (x *EntityProto) GetEntityGroup() *Path {
+	if x != nil {
+		return x.EntityGroup
 	}
 	return nil
 }
 
-func (m *EntityProto) GetOwner() *User {
-	if m != nil {
-		return m.Owner
+func (x *EntityProto) GetOwner() *User {
+	if x != nil {
+		return x.Owner
 	}
 	return nil
 }
 
-func (m *EntityProto) GetKind() EntityProto_Kind {
-	if m != nil && m.Kind != nil {
-		return *m.Kind
+func (x *EntityProto) GetKind() EntityProto_Kind {
+	if x != nil && x.Kind != nil {
+		return *x.Kind
 	}
-	return EntityProto_GD_CONTACT
+	return EntityProto_NONE
 }
 
-func (m *EntityProto) GetKindUri() string {
-	if m != nil && m.KindUri != nil {
-		return *m.KindUri
+func (x *EntityProto) GetKindUri() string {
+	if x != nil && x.KindUri != nil {
+		return *x.KindUri
 	}
 	return ""
 }
 
-func (m *EntityProto) GetProperty() []*Property {
-	if m != nil {
-		return m.Property
+func (x *EntityProto) GetProperty() []*Property {
+	if x != nil {
+		return x.Property
 	}
 	return nil
 }
 
-func (m *EntityProto) GetRawProperty() []*Property {
-	if m != nil {
-		return m.RawProperty
+func (x *EntityProto) GetRawProperty() []*Property {
+	if x != nil {
+		return x.RawProperty
 	}
 	return nil
 }
 
-func (m *EntityProto) GetRank() int32 {
-	if m != nil && m.Rank != nil {
-		return *m.Rank
+func (x *EntityProto) GetRank() int32 {
+	if x != nil && x.Rank != nil {
+		return *x.Rank
 	}
 	return 0
 }
 
 type CompositeProperty struct {
-	IndexId              *int64   `protobuf:"varint,1,req,name=index_id,json=indexId" json:"index_id,omitempty"`
-	Value                []string `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CompositeProperty) Reset()         { *m = CompositeProperty{} }
-func (m *CompositeProperty) String() string { return proto.CompactTextString(m) }
-func (*CompositeProperty) ProtoMessage()    {}
-func (*CompositeProperty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{7}
+	IndexId int64    `protobuf:"varint,1,opt,name=index_id,json=indexId,proto3" json:"index_id,omitempty"`
+	Value   []string `protobuf:"bytes,2,rep,name=value,proto3" json:"value,omitempty"`
 }
-func (m *CompositeProperty) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompositeProperty.Unmarshal(m, b)
-}
-func (m *CompositeProperty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompositeProperty.Marshal(b, m, deterministic)
-}
-func (dst *CompositeProperty) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompositeProperty.Merge(dst, src)
+
+func (x *CompositeProperty) Reset() {
+	*x = CompositeProperty{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CompositeProperty) XXX_Size() int {
-	return xxx_messageInfo_CompositeProperty.Size(m)
+
+func (x *CompositeProperty) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CompositeProperty) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompositeProperty.DiscardUnknown(m)
+
+func (*CompositeProperty) ProtoMessage() {}
+
+func (x *CompositeProperty) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_CompositeProperty proto.InternalMessageInfo
+// Deprecated: Use CompositeProperty.ProtoReflect.Descriptor instead.
+func (*CompositeProperty) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{7}
+}
 
-func (m *CompositeProperty) GetIndexId() int64 {
-	if m != nil && m.IndexId != nil {
-		return *m.IndexId
+func (x *CompositeProperty) GetIndexId() int64 {
+	if x != nil {
+		return x.IndexId
 	}
 	return 0
 }
 
-func (m *CompositeProperty) GetValue() []string {
-	if m != nil {
-		return m.Value
+func (x *CompositeProperty) GetValue() []string {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
 type Index struct {
-	EntityType           *string           `protobuf:"bytes,1,req,name=entity_type,json=entityType" json:"entity_type,omitempty"`
-	Ancestor             *bool             `protobuf:"varint,5,req,name=ancestor" json:"ancestor,omitempty"`
-	Property             []*Index_Property `protobuf:"group,2,rep,name=Property,json=property" json:"property,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Index) Reset()         { *m = Index{} }
-func (m *Index) String() string { return proto.CompactTextString(m) }
-func (*Index) ProtoMessage()    {}
-func (*Index) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{8}
+	EntityType string                `protobuf:"bytes,1,opt,name=entity_type,json=entityType,proto3" json:"entity_type,omitempty"`
+	Ancestor   bool                  `protobuf:"varint,5,opt,name=ancestor,proto3" json:"ancestor,omitempty"`
+	Property   []*Index_PropertyType `protobuf:"bytes,2,rep,name=Property,proto3" json:"Property,omitempty"`
 }
-func (m *Index) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Index.Unmarshal(m, b)
-}
-func (m *Index) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Index.Marshal(b, m, deterministic)
-}
-func (dst *Index) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Index.Merge(dst, src)
+
+func (x *Index) Reset() {
+	*x = Index{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Index) XXX_Size() int {
-	return xxx_messageInfo_Index.Size(m)
+
+func (x *Index) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Index) XXX_DiscardUnknown() {
-	xxx_messageInfo_Index.DiscardUnknown(m)
+
+func (*Index) ProtoMessage() {}
+
+func (x *Index) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_Index proto.InternalMessageInfo
+// Deprecated: Use Index.ProtoReflect.Descriptor instead.
+func (*Index) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{8}
+}
 
-func (m *Index) GetEntityType() string {
-	if m != nil && m.EntityType != nil {
-		return *m.EntityType
+func (x *Index) GetEntityType() string {
+	if x != nil {
+		return x.EntityType
 	}
 	return ""
 }
 
-func (m *Index) GetAncestor() bool {
-	if m != nil && m.Ancestor != nil {
-		return *m.Ancestor
+func (x *Index) GetAncestor() bool {
+	if x != nil {
+		return x.Ancestor
 	}
 	return false
 }
 
-func (m *Index) GetProperty() []*Index_Property {
-	if m != nil {
-		return m.Property
+func (x *Index) GetProperty() []*Index_PropertyType {
+	if x != nil {
+		return x.Property
 	}
 	return nil
 }
 
-type Index_Property struct {
-	Name                 *string                   `protobuf:"bytes,3,req,name=name" json:"name,omitempty"`
-	Direction            *Index_Property_Direction `protobuf:"varint,4,opt,name=direction,enum=appengine.Index_Property_Direction,def=1" json:"direction,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
-}
+type CompositeIndex struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Index_Property) Reset()         { *m = Index_Property{} }
-func (m *Index_Property) String() string { return proto.CompactTextString(m) }
-func (*Index_Property) ProtoMessage()    {}
-func (*Index_Property) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{8, 0}
+	AppId             string               `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+	Id                int64                `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"`
+	Definition        *Index               `protobuf:"bytes,3,opt,name=definition,proto3" json:"definition,omitempty"`
+	State             CompositeIndex_State `protobuf:"varint,4,opt,name=state,proto3,enum=appengine.CompositeIndex_State" json:"state,omitempty"`
+	OnlyUseIfRequired *bool                `protobuf:"varint,6,opt,name=only_use_if_required,json=onlyUseIfRequired,proto3,oneof" json:"only_use_if_required,omitempty"`
 }
-func (m *Index_Property) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Index_Property.Unmarshal(m, b)
-}
-func (m *Index_Property) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Index_Property.Marshal(b, m, deterministic)
-}
-func (dst *Index_Property) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Index_Property.Merge(dst, src)
-}
-func (m *Index_Property) XXX_Size() int {
-	return xxx_messageInfo_Index_Property.Size(m)
-}
-func (m *Index_Property) XXX_DiscardUnknown() {
-	xxx_messageInfo_Index_Property.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Index_Property proto.InternalMessageInfo
 
-const Default_Index_Property_Direction Index_Property_Direction = Index_Property_ASCENDING
-
-func (m *Index_Property) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *CompositeIndex) Reset() {
+	*x = CompositeIndex{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-func (m *Index_Property) GetDirection() Index_Property_Direction {
-	if m != nil && m.Direction != nil {
-		return *m.Direction
+func (x *CompositeIndex) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CompositeIndex) ProtoMessage() {}
+
+func (x *CompositeIndex) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 Default_Index_Property_Direction
+	return mi.MessageOf(x)
 }
 
-type CompositeIndex struct {
-	AppId                *string               `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
-	Id                   *int64                `protobuf:"varint,2,req,name=id" json:"id,omitempty"`
-	Definition           *Index                `protobuf:"bytes,3,req,name=definition" json:"definition,omitempty"`
-	State                *CompositeIndex_State `protobuf:"varint,4,req,name=state,enum=appengine.CompositeIndex_State" json:"state,omitempty"`
-	OnlyUseIfRequired    *bool                 `protobuf:"varint,6,opt,name=only_use_if_required,json=onlyUseIfRequired,def=0" json:"only_use_if_required,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *CompositeIndex) Reset()         { *m = CompositeIndex{} }
-func (m *CompositeIndex) String() string { return proto.CompactTextString(m) }
-func (*CompositeIndex) ProtoMessage()    {}
+// Deprecated: Use CompositeIndex.ProtoReflect.Descriptor instead.
 func (*CompositeIndex) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{9}
-}
-func (m *CompositeIndex) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompositeIndex.Unmarshal(m, b)
-}
-func (m *CompositeIndex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompositeIndex.Marshal(b, m, deterministic)
-}
-func (dst *CompositeIndex) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompositeIndex.Merge(dst, src)
-}
-func (m *CompositeIndex) XXX_Size() int {
-	return xxx_messageInfo_CompositeIndex.Size(m)
+	return file_datastore_v3_proto_rawDescGZIP(), []int{9}
 }
-func (m *CompositeIndex) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompositeIndex.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CompositeIndex proto.InternalMessageInfo
 
-const Default_CompositeIndex_OnlyUseIfRequired bool = false
-
-func (m *CompositeIndex) GetAppId() string {
-	if m != nil && m.AppId != nil {
-		return *m.AppId
+func (x *CompositeIndex) GetAppId() string {
+	if x != nil {
+		return x.AppId
 	}
 	return ""
 }
 
-func (m *CompositeIndex) GetId() int64 {
-	if m != nil && m.Id != nil {
-		return *m.Id
+func (x *CompositeIndex) GetId() int64 {
+	if x != nil {
+		return x.Id
 	}
 	return 0
 }
 
-func (m *CompositeIndex) GetDefinition() *Index {
-	if m != nil {
-		return m.Definition
+func (x *CompositeIndex) GetDefinition() *Index {
+	if x != nil {
+		return x.Definition
 	}
 	return nil
 }
 
-func (m *CompositeIndex) GetState() CompositeIndex_State {
-	if m != nil && m.State != nil {
-		return *m.State
+func (x *CompositeIndex) GetState() CompositeIndex_State {
+	if x != nil {
+		return x.State
 	}
-	return CompositeIndex_WRITE_ONLY
+	return CompositeIndex_NONE
 }
 
-func (m *CompositeIndex) GetOnlyUseIfRequired() bool {
-	if m != nil && m.OnlyUseIfRequired != nil {
-		return *m.OnlyUseIfRequired
+func (x *CompositeIndex) GetOnlyUseIfRequired() bool {
+	if x != nil && x.OnlyUseIfRequired != nil {
+		return *x.OnlyUseIfRequired
 	}
-	return Default_CompositeIndex_OnlyUseIfRequired
+	return false
 }
 
 type IndexPostfix struct {
-	IndexValue           []*IndexPostfix_IndexValue `protobuf:"bytes,1,rep,name=index_value,json=indexValue" json:"index_value,omitempty"`
-	Key                  *Reference                 `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
-	Before               *bool                      `protobuf:"varint,3,opt,name=before,def=1" json:"before,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
-	XXX_unrecognized     []byte                     `json:"-"`
-	XXX_sizecache        int32                      `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *IndexPostfix) Reset()         { *m = IndexPostfix{} }
-func (m *IndexPostfix) String() string { return proto.CompactTextString(m) }
-func (*IndexPostfix) ProtoMessage()    {}
-func (*IndexPostfix) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{10}
-}
-func (m *IndexPostfix) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndexPostfix.Unmarshal(m, b)
-}
-func (m *IndexPostfix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndexPostfix.Marshal(b, m, deterministic)
+	IndexValue []*IndexPostfix_IndexValue `protobuf:"bytes,1,rep,name=index_value,json=indexValue,proto3" json:"index_value,omitempty"`
+	Key        *Reference                 `protobuf:"bytes,2,opt,name=key,proto3,oneof" json:"key,omitempty"`
+	Before     *bool                      `protobuf:"varint,3,opt,name=before,proto3,oneof" json:"before,omitempty"`
 }
-func (dst *IndexPostfix) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexPostfix.Merge(dst, src)
-}
-func (m *IndexPostfix) XXX_Size() int {
-	return xxx_messageInfo_IndexPostfix.Size(m)
+
+func (x *IndexPostfix) Reset() {
+	*x = IndexPostfix{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *IndexPostfix) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndexPostfix.DiscardUnknown(m)
+
+func (x *IndexPostfix) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_IndexPostfix proto.InternalMessageInfo
+func (*IndexPostfix) ProtoMessage() {}
 
-const Default_IndexPostfix_Before bool = true
+func (x *IndexPostfix) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 IndexPostfix.ProtoReflect.Descriptor instead.
+func (*IndexPostfix) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{10}
+}
 
-func (m *IndexPostfix) GetIndexValue() []*IndexPostfix_IndexValue {
-	if m != nil {
-		return m.IndexValue
+func (x *IndexPostfix) GetIndexValue() []*IndexPostfix_IndexValue {
+	if x != nil {
+		return x.IndexValue
 	}
 	return nil
 }
 
-func (m *IndexPostfix) GetKey() *Reference {
-	if m != nil {
-		return m.Key
+func (x *IndexPostfix) GetKey() *Reference {
+	if x != nil {
+		return x.Key
 	}
 	return nil
 }
 
-func (m *IndexPostfix) GetBefore() bool {
-	if m != nil && m.Before != nil {
-		return *m.Before
+func (x *IndexPostfix) GetBefore() bool {
+	if x != nil && x.Before != nil {
+		return *x.Before
 	}
-	return Default_IndexPostfix_Before
+	return false
 }
 
-type IndexPostfix_IndexValue struct {
-	PropertyName         *string        `protobuf:"bytes,1,req,name=property_name,json=propertyName" json:"property_name,omitempty"`
-	Value                *PropertyValue `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
-}
+type IndexPosition struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *IndexPostfix_IndexValue) Reset()         { *m = IndexPostfix_IndexValue{} }
-func (m *IndexPostfix_IndexValue) String() string { return proto.CompactTextString(m) }
-func (*IndexPostfix_IndexValue) ProtoMessage()    {}
-func (*IndexPostfix_IndexValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{10, 0}
-}
-func (m *IndexPostfix_IndexValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndexPostfix_IndexValue.Unmarshal(m, b)
-}
-func (m *IndexPostfix_IndexValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndexPostfix_IndexValue.Marshal(b, m, deterministic)
+	Key    *string `protobuf:"bytes,1,opt,name=key,proto3,oneof" json:"key,omitempty"`
+	Before *bool   `protobuf:"varint,2,opt,name=before,proto3,oneof" json:"before,omitempty"`
 }
-func (dst *IndexPostfix_IndexValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexPostfix_IndexValue.Merge(dst, src)
-}
-func (m *IndexPostfix_IndexValue) XXX_Size() int {
-	return xxx_messageInfo_IndexPostfix_IndexValue.Size(m)
-}
-func (m *IndexPostfix_IndexValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndexPostfix_IndexValue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IndexPostfix_IndexValue proto.InternalMessageInfo
 
-func (m *IndexPostfix_IndexValue) GetPropertyName() string {
-	if m != nil && m.PropertyName != nil {
-		return *m.PropertyName
+func (x *IndexPosition) Reset() {
+	*x = IndexPosition{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-func (m *IndexPostfix_IndexValue) GetValue() *PropertyValue {
-	if m != nil {
-		return m.Value
-	}
-	return nil
+func (x *IndexPosition) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-type IndexPosition struct {
-	Key                  *string  `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
-	Before               *bool    `protobuf:"varint,2,opt,name=before,def=1" json:"before,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (*IndexPosition) ProtoMessage() {}
+
+func (x *IndexPosition) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-func (m *IndexPosition) Reset()         { *m = IndexPosition{} }
-func (m *IndexPosition) String() string { return proto.CompactTextString(m) }
-func (*IndexPosition) ProtoMessage()    {}
+// Deprecated: Use IndexPosition.ProtoReflect.Descriptor instead.
 func (*IndexPosition) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{11}
-}
-func (m *IndexPosition) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndexPosition.Unmarshal(m, b)
-}
-func (m *IndexPosition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndexPosition.Marshal(b, m, deterministic)
+	return file_datastore_v3_proto_rawDescGZIP(), []int{11}
 }
-func (dst *IndexPosition) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexPosition.Merge(dst, src)
-}
-func (m *IndexPosition) XXX_Size() int {
-	return xxx_messageInfo_IndexPosition.Size(m)
-}
-func (m *IndexPosition) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndexPosition.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IndexPosition proto.InternalMessageInfo
 
-const Default_IndexPosition_Before bool = true
-
-func (m *IndexPosition) GetKey() string {
-	if m != nil && m.Key != nil {
-		return *m.Key
+func (x *IndexPosition) GetKey() string {
+	if x != nil && x.Key != nil {
+		return *x.Key
 	}
 	return ""
 }
 
-func (m *IndexPosition) GetBefore() bool {
-	if m != nil && m.Before != nil {
-		return *m.Before
+func (x *IndexPosition) GetBefore() bool {
+	if x != nil && x.Before != nil {
+		return *x.Before
 	}
-	return Default_IndexPosition_Before
+	return false
 }
 
 type Snapshot struct {
-	Ts                   *int64   `protobuf:"varint,1,req,name=ts" json:"ts,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Snapshot) Reset()         { *m = Snapshot{} }
-func (m *Snapshot) String() string { return proto.CompactTextString(m) }
-func (*Snapshot) ProtoMessage()    {}
-func (*Snapshot) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{12}
+	Ts int64 `protobuf:"varint,1,opt,name=ts,proto3" json:"ts,omitempty"`
 }
-func (m *Snapshot) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Snapshot.Unmarshal(m, b)
-}
-func (m *Snapshot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Snapshot.Marshal(b, m, deterministic)
-}
-func (dst *Snapshot) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Snapshot.Merge(dst, src)
+
+func (x *Snapshot) Reset() {
+	*x = Snapshot{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Snapshot) XXX_Size() int {
-	return xxx_messageInfo_Snapshot.Size(m)
+
+func (x *Snapshot) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Snapshot) XXX_DiscardUnknown() {
-	xxx_messageInfo_Snapshot.DiscardUnknown(m)
+
+func (*Snapshot) ProtoMessage() {}
+
+func (x *Snapshot) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_Snapshot proto.InternalMessageInfo
+// Deprecated: Use Snapshot.ProtoReflect.Descriptor instead.
+func (*Snapshot) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{12}
+}
 
-func (m *Snapshot) GetTs() int64 {
-	if m != nil && m.Ts != nil {
-		return *m.Ts
+func (x *Snapshot) GetTs() int64 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
 type InternalHeader struct {
-	Qos                  *string  `protobuf:"bytes,1,opt,name=qos" json:"qos,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *InternalHeader) Reset()         { *m = InternalHeader{} }
-func (m *InternalHeader) String() string { return proto.CompactTextString(m) }
-func (*InternalHeader) ProtoMessage()    {}
-func (*InternalHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{13}
+	Qos *string `protobuf:"bytes,1,opt,name=qos,proto3,oneof" json:"qos,omitempty"`
 }
-func (m *InternalHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_InternalHeader.Unmarshal(m, b)
-}
-func (m *InternalHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_InternalHeader.Marshal(b, m, deterministic)
-}
-func (dst *InternalHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InternalHeader.Merge(dst, src)
+
+func (x *InternalHeader) Reset() {
+	*x = InternalHeader{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *InternalHeader) XXX_Size() int {
-	return xxx_messageInfo_InternalHeader.Size(m)
+
+func (x *InternalHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *InternalHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_InternalHeader.DiscardUnknown(m)
+
+func (*InternalHeader) ProtoMessage() {}
+
+func (x *InternalHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_InternalHeader proto.InternalMessageInfo
+// Deprecated: Use InternalHeader.ProtoReflect.Descriptor instead.
+func (*InternalHeader) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{13}
+}
 
-func (m *InternalHeader) GetQos() string {
-	if m != nil && m.Qos != nil {
-		return *m.Qos
+func (x *InternalHeader) GetQos() string {
+	if x != nil && x.Qos != nil {
+		return *x.Qos
 	}
 	return ""
 }
 
 type Transaction struct {
-	Header               *InternalHeader `protobuf:"bytes,4,opt,name=header" json:"header,omitempty"`
-	Handle               *uint64         `protobuf:"fixed64,1,req,name=handle" json:"handle,omitempty"`
-	App                  *string         `protobuf:"bytes,2,req,name=app" json:"app,omitempty"`
-	MarkChanges          *bool           `protobuf:"varint,3,opt,name=mark_changes,json=markChanges,def=0" json:"mark_changes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *Transaction) Reset()         { *m = Transaction{} }
-func (m *Transaction) String() string { return proto.CompactTextString(m) }
-func (*Transaction) ProtoMessage()    {}
-func (*Transaction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{14}
-}
-func (m *Transaction) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Transaction.Unmarshal(m, b)
-}
-func (m *Transaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Transaction.Marshal(b, m, deterministic)
-}
-func (dst *Transaction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Transaction.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Header      *InternalHeader `protobuf:"bytes,4,opt,name=header,proto3,oneof" json:"header,omitempty"`
+	Handle      uint64          `protobuf:"fixed64,1,opt,name=handle,proto3" json:"handle,omitempty"`
+	App         string          `protobuf:"bytes,2,opt,name=app,proto3" json:"app,omitempty"`
+	MarkChanges *bool           `protobuf:"varint,3,opt,name=mark_changes,json=markChanges,proto3,oneof" json:"mark_changes,omitempty"`
 }
-func (m *Transaction) XXX_Size() int {
-	return xxx_messageInfo_Transaction.Size(m)
+
+func (x *Transaction) Reset() {
+	*x = Transaction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Transaction) XXX_DiscardUnknown() {
-	xxx_messageInfo_Transaction.DiscardUnknown(m)
+
+func (x *Transaction) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_Transaction proto.InternalMessageInfo
+func (*Transaction) ProtoMessage() {}
+
+func (x *Transaction) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
+}
 
-const Default_Transaction_MarkChanges bool = false
+// Deprecated: Use Transaction.ProtoReflect.Descriptor instead.
+func (*Transaction) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{14}
+}
 
-func (m *Transaction) GetHeader() *InternalHeader {
-	if m != nil {
-		return m.Header
+func (x *Transaction) GetHeader() *InternalHeader {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-func (m *Transaction) GetHandle() uint64 {
-	if m != nil && m.Handle != nil {
-		return *m.Handle
+func (x *Transaction) GetHandle() uint64 {
+	if x != nil {
+		return x.Handle
 	}
 	return 0
 }
 
-func (m *Transaction) GetApp() string {
-	if m != nil && m.App != nil {
-		return *m.App
+func (x *Transaction) GetApp() string {
+	if x != nil {
+		return x.App
 	}
 	return ""
 }
 
-func (m *Transaction) GetMarkChanges() bool {
-	if m != nil && m.MarkChanges != nil {
-		return *m.MarkChanges
+func (x *Transaction) GetMarkChanges() bool {
+	if x != nil && x.MarkChanges != nil {
+		return *x.MarkChanges
 	}
-	return Default_Transaction_MarkChanges
+	return false
 }
 
 type Query struct {
-	Header               *InternalHeader   `protobuf:"bytes,39,opt,name=header" json:"header,omitempty"`
-	App                  *string           `protobuf:"bytes,1,req,name=app" json:"app,omitempty"`
-	NameSpace            *string           `protobuf:"bytes,29,opt,name=name_space,json=nameSpace" json:"name_space,omitempty"`
-	Kind                 *string           `protobuf:"bytes,3,opt,name=kind" json:"kind,omitempty"`
-	Ancestor             *Reference        `protobuf:"bytes,17,opt,name=ancestor" json:"ancestor,omitempty"`
-	Filter               []*Query_Filter   `protobuf:"group,4,rep,name=Filter,json=filter" json:"filter,omitempty"`
-	SearchQuery          *string           `protobuf:"bytes,8,opt,name=search_query,json=searchQuery" json:"search_query,omitempty"`
-	Order                []*Query_Order    `protobuf:"group,9,rep,name=Order,json=order" json:"order,omitempty"`
-	Hint                 *Query_Hint       `protobuf:"varint,18,opt,name=hint,enum=appengine.Query_Hint" json:"hint,omitempty"`
-	Count                *int32            `protobuf:"varint,23,opt,name=count" json:"count,omitempty"`
-	Offset               *int32            `protobuf:"varint,12,opt,name=offset,def=0" json:"offset,omitempty"`
-	Limit                *int32            `protobuf:"varint,16,opt,name=limit" json:"limit,omitempty"`
-	CompiledCursor       *CompiledCursor   `protobuf:"bytes,30,opt,name=compiled_cursor,json=compiledCursor" json:"compiled_cursor,omitempty"`
-	EndCompiledCursor    *CompiledCursor   `protobuf:"bytes,31,opt,name=end_compiled_cursor,json=endCompiledCursor" json:"end_compiled_cursor,omitempty"`
-	CompositeIndex       []*CompositeIndex `protobuf:"bytes,19,rep,name=composite_index,json=compositeIndex" json:"composite_index,omitempty"`
-	RequirePerfectPlan   *bool             `protobuf:"varint,20,opt,name=require_perfect_plan,json=requirePerfectPlan,def=0" json:"require_perfect_plan,omitempty"`
-	KeysOnly             *bool             `protobuf:"varint,21,opt,name=keys_only,json=keysOnly,def=0" json:"keys_only,omitempty"`
-	Transaction          *Transaction      `protobuf:"bytes,22,opt,name=transaction" json:"transaction,omitempty"`
-	Compile              *bool             `protobuf:"varint,25,opt,name=compile,def=0" json:"compile,omitempty"`
-	FailoverMs           *int64            `protobuf:"varint,26,opt,name=failover_ms,json=failoverMs" json:"failover_ms,omitempty"`
-	Strong               *bool             `protobuf:"varint,32,opt,name=strong" json:"strong,omitempty"`
-	PropertyName         []string          `protobuf:"bytes,33,rep,name=property_name,json=propertyName" json:"property_name,omitempty"`
-	GroupByPropertyName  []string          `protobuf:"bytes,34,rep,name=group_by_property_name,json=groupByPropertyName" json:"group_by_property_name,omitempty"`
-	Distinct             *bool             `protobuf:"varint,24,opt,name=distinct" json:"distinct,omitempty"`
-	MinSafeTimeSeconds   *int64            `protobuf:"varint,35,opt,name=min_safe_time_seconds,json=minSafeTimeSeconds" json:"min_safe_time_seconds,omitempty"`
-	SafeReplicaName      []string          `protobuf:"bytes,36,rep,name=safe_replica_name,json=safeReplicaName" json:"safe_replica_name,omitempty"`
-	PersistOffset        *bool             `protobuf:"varint,37,opt,name=persist_offset,json=persistOffset,def=0" json:"persist_offset,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *Query) Reset()         { *m = Query{} }
-func (m *Query) String() string { return proto.CompactTextString(m) }
-func (*Query) ProtoMessage()    {}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Header              *InternalHeader     `protobuf:"bytes,39,opt,name=header,proto3,oneof" json:"header,omitempty"`
+	App                 string              `protobuf:"bytes,1,opt,name=app,proto3" json:"app,omitempty"`
+	NameSpace           *string             `protobuf:"bytes,29,opt,name=name_space,json=nameSpace,proto3,oneof" json:"name_space,omitempty"`
+	Kind                *string             `protobuf:"bytes,3,opt,name=kind,proto3,oneof" json:"kind,omitempty"`
+	Ancestor            *Reference          `protobuf:"bytes,17,opt,name=ancestor,proto3,oneof" json:"ancestor,omitempty"`
+	Filter              []*Query_FilterType `protobuf:"bytes,4,rep,name=Filter,proto3" json:"Filter,omitempty"`
+	SearchQuery         *string             `protobuf:"bytes,8,opt,name=search_query,json=searchQuery,proto3,oneof" json:"search_query,omitempty"`
+	Order               []*Query_OrderType  `protobuf:"bytes,9,rep,name=Order,proto3" json:"Order,omitempty"`
+	Hint                *Query_Hint         `protobuf:"varint,18,opt,name=hint,proto3,enum=appengine.Query_Hint,oneof" json:"hint,omitempty"`
+	Count               *int32              `protobuf:"varint,23,opt,name=count,proto3,oneof" json:"count,omitempty"`
+	Offset              *int32              `protobuf:"varint,12,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+	Limit               *int32              `protobuf:"varint,16,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
+	CompiledCursor      *CompiledCursor     `protobuf:"bytes,30,opt,name=compiled_cursor,json=compiledCursor,proto3,oneof" json:"compiled_cursor,omitempty"`
+	EndCompiledCursor   *CompiledCursor     `protobuf:"bytes,31,opt,name=end_compiled_cursor,json=endCompiledCursor,proto3,oneof" json:"end_compiled_cursor,omitempty"`
+	CompositeIndex      []*CompositeIndex   `protobuf:"bytes,19,rep,name=composite_index,json=compositeIndex,proto3" json:"composite_index,omitempty"`
+	RequirePerfectPlan  *bool               `protobuf:"varint,20,opt,name=require_perfect_plan,json=requirePerfectPlan,proto3,oneof" json:"require_perfect_plan,omitempty"`
+	KeysOnly            *bool               `protobuf:"varint,21,opt,name=keys_only,json=keysOnly,proto3,oneof" json:"keys_only,omitempty"`
+	Transaction         *Transaction        `protobuf:"bytes,22,opt,name=transaction,proto3,oneof" json:"transaction,omitempty"`
+	Compile             *bool               `protobuf:"varint,25,opt,name=compile,proto3,oneof" json:"compile,omitempty"`
+	FailoverMs          *int64              `protobuf:"varint,26,opt,name=failover_ms,json=failoverMs,proto3,oneof" json:"failover_ms,omitempty"`
+	Strong              *bool               `protobuf:"varint,32,opt,name=strong,proto3,oneof" json:"strong,omitempty"`
+	PropertyName        []string            `protobuf:"bytes,33,rep,name=property_name,json=propertyName,proto3" json:"property_name,omitempty"`
+	GroupByPropertyName []string            `protobuf:"bytes,34,rep,name=group_by_property_name,json=groupByPropertyName,proto3" json:"group_by_property_name,omitempty"`
+	Distinct            *bool               `protobuf:"varint,24,opt,name=distinct,proto3,oneof" json:"distinct,omitempty"`
+	MinSafeTimeSeconds  *int64              `protobuf:"varint,35,opt,name=min_safe_time_seconds,json=minSafeTimeSeconds,proto3,oneof" json:"min_safe_time_seconds,omitempty"`
+	SafeReplicaName     []string            `protobuf:"bytes,36,rep,name=safe_replica_name,json=safeReplicaName,proto3" json:"safe_replica_name,omitempty"`
+	PersistOffset       *bool               `protobuf:"varint,37,opt,name=persist_offset,json=persistOffset,proto3,oneof" json:"persist_offset,omitempty"`
+}
+
+func (x *Query) Reset() {
+	*x = Query{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Query) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Query) ProtoMessage() {}
+
+func (x *Query) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 Query.ProtoReflect.Descriptor instead.
 func (*Query) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15}
+	return file_datastore_v3_proto_rawDescGZIP(), []int{15}
 }
-func (m *Query) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Query.Unmarshal(m, b)
-}
-func (m *Query) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Query.Marshal(b, m, deterministic)
-}
-func (dst *Query) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Query.Merge(dst, src)
-}
-func (m *Query) XXX_Size() int {
-	return xxx_messageInfo_Query.Size(m)
-}
-func (m *Query) XXX_DiscardUnknown() {
-	xxx_messageInfo_Query.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Query proto.InternalMessageInfo
 
-const Default_Query_Offset int32 = 0
-const Default_Query_RequirePerfectPlan bool = false
-const Default_Query_KeysOnly bool = false
-const Default_Query_Compile bool = false
-const Default_Query_PersistOffset bool = false
-
-func (m *Query) GetHeader() *InternalHeader {
-	if m != nil {
-		return m.Header
+func (x *Query) GetHeader() *InternalHeader {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-func (m *Query) GetApp() string {
-	if m != nil && m.App != nil {
-		return *m.App
+func (x *Query) GetApp() string {
+	if x != nil {
+		return x.App
 	}
 	return ""
 }
 
-func (m *Query) GetNameSpace() string {
-	if m != nil && m.NameSpace != nil {
-		return *m.NameSpace
+func (x *Query) GetNameSpace() string {
+	if x != nil && x.NameSpace != nil {
+		return *x.NameSpace
 	}
 	return ""
 }
 
-func (m *Query) GetKind() string {
-	if m != nil && m.Kind != nil {
-		return *m.Kind
+func (x *Query) GetKind() string {
+	if x != nil && x.Kind != nil {
+		return *x.Kind
 	}
 	return ""
 }
 
-func (m *Query) GetAncestor() *Reference {
-	if m != nil {
-		return m.Ancestor
+func (x *Query) GetAncestor() *Reference {
+	if x != nil {
+		return x.Ancestor
 	}
 	return nil
 }
 
-func (m *Query) GetFilter() []*Query_Filter {
-	if m != nil {
-		return m.Filter
+func (x *Query) GetFilter() []*Query_FilterType {
+	if x != nil {
+		return x.Filter
 	}
 	return nil
 }
 
-func (m *Query) GetSearchQuery() string {
-	if m != nil && m.SearchQuery != nil {
-		return *m.SearchQuery
+func (x *Query) GetSearchQuery() string {
+	if x != nil && x.SearchQuery != nil {
+		return *x.SearchQuery
 	}
 	return ""
 }
 
-func (m *Query) GetOrder() []*Query_Order {
-	if m != nil {
-		return m.Order
+func (x *Query) GetOrder() []*Query_OrderType {
+	if x != nil {
+		return x.Order
 	}
 	return nil
 }
 
-func (m *Query) GetHint() Query_Hint {
-	if m != nil && m.Hint != nil {
-		return *m.Hint
+func (x *Query) GetHint() Query_Hint {
+	if x != nil && x.Hint != nil {
+		return *x.Hint
 	}
-	return Query_ORDER_FIRST
+	return Query_NONE
 }
 
-func (m *Query) GetCount() int32 {
-	if m != nil && m.Count != nil {
-		return *m.Count
+func (x *Query) GetCount() int32 {
+	if x != nil && x.Count != nil {
+		return *x.Count
 	}
 	return 0
 }
 
-func (m *Query) GetOffset() int32 {
-	if m != nil && m.Offset != nil {
-		return *m.Offset
+func (x *Query) GetOffset() int32 {
+	if x != nil && x.Offset != nil {
+		return *x.Offset
 	}
-	return Default_Query_Offset
+	return 0
 }
 
-func (m *Query) GetLimit() int32 {
-	if m != nil && m.Limit != nil {
-		return *m.Limit
+func (x *Query) GetLimit() int32 {
+	if x != nil && x.Limit != nil {
+		return *x.Limit
 	}
 	return 0
 }
 
-func (m *Query) GetCompiledCursor() *CompiledCursor {
-	if m != nil {
-		return m.CompiledCursor
+func (x *Query) GetCompiledCursor() *CompiledCursor {
+	if x != nil {
+		return x.CompiledCursor
 	}
 	return nil
 }
 
-func (m *Query) GetEndCompiledCursor() *CompiledCursor {
-	if m != nil {
-		return m.EndCompiledCursor
+func (x *Query) GetEndCompiledCursor() *CompiledCursor {
+	if x != nil {
+		return x.EndCompiledCursor
 	}
 	return nil
 }
 
-func (m *Query) GetCompositeIndex() []*CompositeIndex {
-	if m != nil {
-		return m.CompositeIndex
+func (x *Query) GetCompositeIndex() []*CompositeIndex {
+	if x != nil {
+		return x.CompositeIndex
 	}
 	return nil
 }
 
-func (m *Query) GetRequirePerfectPlan() bool {
-	if m != nil && m.RequirePerfectPlan != nil {
-		return *m.RequirePerfectPlan
+func (x *Query) GetRequirePerfectPlan() bool {
+	if x != nil && x.RequirePerfectPlan != nil {
+		return *x.RequirePerfectPlan
 	}
-	return Default_Query_RequirePerfectPlan
+	return false
 }
 
-func (m *Query) GetKeysOnly() bool {
-	if m != nil && m.KeysOnly != nil {
-		return *m.KeysOnly
+func (x *Query) GetKeysOnly() bool {
+	if x != nil && x.KeysOnly != nil {
+		return *x.KeysOnly
 	}
-	return Default_Query_KeysOnly
+	return false
 }
 
-func (m *Query) GetTransaction() *Transaction {
-	if m != nil {
-		return m.Transaction
+func (x *Query) GetTransaction() *Transaction {
+	if x != nil {
+		return x.Transaction
 	}
 	return nil
 }
 
-func (m *Query) GetCompile() bool {
-	if m != nil && m.Compile != nil {
-		return *m.Compile
+func (x *Query) GetCompile() bool {
+	if x != nil && x.Compile != nil {
+		return *x.Compile
 	}
-	return Default_Query_Compile
+	return false
 }
 
-func (m *Query) GetFailoverMs() int64 {
-	if m != nil && m.FailoverMs != nil {
-		return *m.FailoverMs
+func (x *Query) GetFailoverMs() int64 {
+	if x != nil && x.FailoverMs != nil {
+		return *x.FailoverMs
 	}
 	return 0
 }
 
-func (m *Query) GetStrong() bool {
-	if m != nil && m.Strong != nil {
-		return *m.Strong
+func (x *Query) GetStrong() bool {
+	if x != nil && x.Strong != nil {
+		return *x.Strong
 	}
 	return false
 }
 
-func (m *Query) GetPropertyName() []string {
-	if m != nil {
-		return m.PropertyName
+func (x *Query) GetPropertyName() []string {
+	if x != nil {
+		return x.PropertyName
 	}
 	return nil
 }
 
-func (m *Query) GetGroupByPropertyName() []string {
-	if m != nil {
-		return m.GroupByPropertyName
+func (x *Query) GetGroupByPropertyName() []string {
+	if x != nil {
+		return x.GroupByPropertyName
 	}
 	return nil
 }
 
-func (m *Query) GetDistinct() bool {
-	if m != nil && m.Distinct != nil {
-		return *m.Distinct
+func (x *Query) GetDistinct() bool {
+	if x != nil && x.Distinct != nil {
+		return *x.Distinct
 	}
 	return false
 }
 
-func (m *Query) GetMinSafeTimeSeconds() int64 {
-	if m != nil && m.MinSafeTimeSeconds != nil {
-		return *m.MinSafeTimeSeconds
+func (x *Query) GetMinSafeTimeSeconds() int64 {
+	if x != nil && x.MinSafeTimeSeconds != nil {
+		return *x.MinSafeTimeSeconds
 	}
 	return 0
 }
 
-func (m *Query) GetSafeReplicaName() []string {
-	if m != nil {
-		return m.SafeReplicaName
+func (x *Query) GetSafeReplicaName() []string {
+	if x != nil {
+		return x.SafeReplicaName
 	}
 	return nil
 }
 
-func (m *Query) GetPersistOffset() bool {
-	if m != nil && m.PersistOffset != nil {
-		return *m.PersistOffset
+func (x *Query) GetPersistOffset() bool {
+	if x != nil && x.PersistOffset != nil {
+		return *x.PersistOffset
 	}
-	return Default_Query_PersistOffset
-}
-
-type Query_Filter struct {
-	Op                   *Query_Filter_Operator `protobuf:"varint,6,req,name=op,enum=appengine.Query_Filter_Operator" json:"op,omitempty"`
-	Property             []*Property            `protobuf:"bytes,14,rep,name=property" json:"property,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
-}
-
-func (m *Query_Filter) Reset()         { *m = Query_Filter{} }
-func (m *Query_Filter) String() string { return proto.CompactTextString(m) }
-func (*Query_Filter) ProtoMessage()    {}
-func (*Query_Filter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15, 0}
-}
-func (m *Query_Filter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Query_Filter.Unmarshal(m, b)
-}
-func (m *Query_Filter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Query_Filter.Marshal(b, m, deterministic)
-}
-func (dst *Query_Filter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Query_Filter.Merge(dst, src)
-}
-func (m *Query_Filter) XXX_Size() int {
-	return xxx_messageInfo_Query_Filter.Size(m)
-}
-func (m *Query_Filter) XXX_DiscardUnknown() {
-	xxx_messageInfo_Query_Filter.DiscardUnknown(m)
+	return false
 }
 
-var xxx_messageInfo_Query_Filter proto.InternalMessageInfo
+type CompiledQuery struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Query_Filter) GetOp() Query_Filter_Operator {
-	if m != nil && m.Op != nil {
-		return *m.Op
-	}
-	return Query_Filter_LESS_THAN
+	PrimaryScan       *CompiledQuery_PrimaryScanType     `protobuf:"bytes,1,opt,name=PrimaryScan,proto3" json:"PrimaryScan,omitempty"`
+	MergeJoinScan     []*CompiledQuery_MergeJoinScanType `protobuf:"bytes,7,rep,name=MergeJoinScan,proto3" json:"MergeJoinScan,omitempty"`
+	IndexDef          *Index                             `protobuf:"bytes,21,opt,name=index_def,json=indexDef,proto3,oneof" json:"index_def,omitempty"`
+	Offset            *int32                             `protobuf:"varint,10,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+	Limit             *int32                             `protobuf:"varint,11,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
+	KeysOnly          bool                               `protobuf:"varint,12,opt,name=keys_only,json=keysOnly,proto3" json:"keys_only,omitempty"`
+	PropertyName      []string                           `protobuf:"bytes,24,rep,name=property_name,json=propertyName,proto3" json:"property_name,omitempty"`
+	DistinctInfixSize *int32                             `protobuf:"varint,25,opt,name=distinct_infix_size,json=distinctInfixSize,proto3,oneof" json:"distinct_infix_size,omitempty"`
+	EntityFilter      *CompiledQuery_EntityFilterType    `protobuf:"bytes,13,opt,name=EntityFilter,proto3,oneof" json:"EntityFilter,omitempty"`
 }
 
-func (m *Query_Filter) GetProperty() []*Property {
-	if m != nil {
-		return m.Property
+func (x *CompiledQuery) Reset() {
+	*x = CompiledQuery{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-type Query_Order struct {
-	Property             *string                `protobuf:"bytes,10,req,name=property" json:"property,omitempty"`
-	Direction            *Query_Order_Direction `protobuf:"varint,11,opt,name=direction,enum=appengine.Query_Order_Direction,def=1" json:"direction,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+func (x *CompiledQuery) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *Query_Order) Reset()         { *m = Query_Order{} }
-func (m *Query_Order) String() string { return proto.CompactTextString(m) }
-func (*Query_Order) ProtoMessage()    {}
-func (*Query_Order) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{15, 1}
-}
-func (m *Query_Order) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Query_Order.Unmarshal(m, b)
-}
-func (m *Query_Order) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Query_Order.Marshal(b, m, deterministic)
-}
-func (dst *Query_Order) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Query_Order.Merge(dst, src)
-}
-func (m *Query_Order) XXX_Size() int {
-	return xxx_messageInfo_Query_Order.Size(m)
-}
-func (m *Query_Order) XXX_DiscardUnknown() {
-	xxx_messageInfo_Query_Order.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Query_Order proto.InternalMessageInfo
-
-const Default_Query_Order_Direction Query_Order_Direction = Query_Order_ASCENDING
+func (*CompiledQuery) ProtoMessage() {}
 
-func (m *Query_Order) GetProperty() string {
-	if m != nil && m.Property != nil {
-		return *m.Property
+func (x *CompiledQuery) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 ""
-}
-
-func (m *Query_Order) GetDirection() Query_Order_Direction {
-	if m != nil && m.Direction != nil {
-		return *m.Direction
-	}
-	return Default_Query_Order_Direction
+	return mi.MessageOf(x)
 }
 
-type CompiledQuery struct {
-	Primaryscan          *CompiledQuery_PrimaryScan     `protobuf:"group,1,req,name=PrimaryScan,json=primaryscan" json:"primaryscan,omitempty"`
-	Mergejoinscan        []*CompiledQuery_MergeJoinScan `protobuf:"group,7,rep,name=MergeJoinScan,json=mergejoinscan" json:"mergejoinscan,omitempty"`
-	IndexDef             *Index                         `protobuf:"bytes,21,opt,name=index_def,json=indexDef" json:"index_def,omitempty"`
-	Offset               *int32                         `protobuf:"varint,10,opt,name=offset,def=0" json:"offset,omitempty"`
-	Limit                *int32                         `protobuf:"varint,11,opt,name=limit" json:"limit,omitempty"`
-	KeysOnly             *bool                          `protobuf:"varint,12,req,name=keys_only,json=keysOnly" json:"keys_only,omitempty"`
-	PropertyName         []string                       `protobuf:"bytes,24,rep,name=property_name,json=propertyName" json:"property_name,omitempty"`
-	DistinctInfixSize    *int32                         `protobuf:"varint,25,opt,name=distinct_infix_size,json=distinctInfixSize" json:"distinct_infix_size,omitempty"`
-	Entityfilter         *CompiledQuery_EntityFilter    `protobuf:"group,13,opt,name=EntityFilter,json=entityfilter" json:"entityfilter,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
-	XXX_unrecognized     []byte                         `json:"-"`
-	XXX_sizecache        int32                          `json:"-"`
-}
-
-func (m *CompiledQuery) Reset()         { *m = CompiledQuery{} }
-func (m *CompiledQuery) String() string { return proto.CompactTextString(m) }
-func (*CompiledQuery) ProtoMessage()    {}
+// Deprecated: Use CompiledQuery.ProtoReflect.Descriptor instead.
 func (*CompiledQuery) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{16}
-}
-func (m *CompiledQuery) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompiledQuery.Unmarshal(m, b)
-}
-func (m *CompiledQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompiledQuery.Marshal(b, m, deterministic)
-}
-func (dst *CompiledQuery) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompiledQuery.Merge(dst, src)
+	return file_datastore_v3_proto_rawDescGZIP(), []int{16}
 }
-func (m *CompiledQuery) XXX_Size() int {
-	return xxx_messageInfo_CompiledQuery.Size(m)
-}
-func (m *CompiledQuery) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompiledQuery.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CompiledQuery proto.InternalMessageInfo
-
-const Default_CompiledQuery_Offset int32 = 0
 
-func (m *CompiledQuery) GetPrimaryscan() *CompiledQuery_PrimaryScan {
-	if m != nil {
-		return m.Primaryscan
+func (x *CompiledQuery) GetPrimaryScan() *CompiledQuery_PrimaryScanType {
+	if x != nil {
+		return x.PrimaryScan
 	}
 	return nil
 }
 
-func (m *CompiledQuery) GetMergejoinscan() []*CompiledQuery_MergeJoinScan {
-	if m != nil {
-		return m.Mergejoinscan
+func (x *CompiledQuery) GetMergeJoinScan() []*CompiledQuery_MergeJoinScanType {
+	if x != nil {
+		return x.MergeJoinScan
 	}
 	return nil
 }
 
-func (m *CompiledQuery) GetIndexDef() *Index {
-	if m != nil {
-		return m.IndexDef
+func (x *CompiledQuery) GetIndexDef() *Index {
+	if x != nil {
+		return x.IndexDef
 	}
 	return nil
 }
 
-func (m *CompiledQuery) GetOffset() int32 {
-	if m != nil && m.Offset != nil {
-		return *m.Offset
+func (x *CompiledQuery) GetOffset() int32 {
+	if x != nil && x.Offset != nil {
+		return *x.Offset
 	}
-	return Default_CompiledQuery_Offset
+	return 0
 }
 
-func (m *CompiledQuery) GetLimit() int32 {
-	if m != nil && m.Limit != nil {
-		return *m.Limit
+func (x *CompiledQuery) GetLimit() int32 {
+	if x != nil && x.Limit != nil {
+		return *x.Limit
 	}
 	return 0
 }
 
-func (m *CompiledQuery) GetKeysOnly() bool {
-	if m != nil && m.KeysOnly != nil {
-		return *m.KeysOnly
+func (x *CompiledQuery) GetKeysOnly() bool {
+	if x != nil {
+		return x.KeysOnly
 	}
 	return false
 }
 
-func (m *CompiledQuery) GetPropertyName() []string {
-	if m != nil {
-		return m.PropertyName
+func (x *CompiledQuery) GetPropertyName() []string {
+	if x != nil {
+		return x.PropertyName
 	}
 	return nil
 }
 
-func (m *CompiledQuery) GetDistinctInfixSize() int32 {
-	if m != nil && m.DistinctInfixSize != nil {
-		return *m.DistinctInfixSize
+func (x *CompiledQuery) GetDistinctInfixSize() int32 {
+	if x != nil && x.DistinctInfixSize != nil {
+		return *x.DistinctInfixSize
 	}
 	return 0
 }
 
-func (m *CompiledQuery) GetEntityfilter() *CompiledQuery_EntityFilter {
-	if m != nil {
-		return m.Entityfilter
+func (x *CompiledQuery) GetEntityFilter() *CompiledQuery_EntityFilterType {
+	if x != nil {
+		return x.EntityFilter
 	}
 	return nil
 }
 
-type CompiledQuery_PrimaryScan struct {
-	IndexName                  *string  `protobuf:"bytes,2,opt,name=index_name,json=indexName" json:"index_name,omitempty"`
-	StartKey                   *string  `protobuf:"bytes,3,opt,name=start_key,json=startKey" json:"start_key,omitempty"`
-	StartInclusive             *bool    `protobuf:"varint,4,opt,name=start_inclusive,json=startInclusive" json:"start_inclusive,omitempty"`
-	EndKey                     *string  `protobuf:"bytes,5,opt,name=end_key,json=endKey" json:"end_key,omitempty"`
-	EndInclusive               *bool    `protobuf:"varint,6,opt,name=end_inclusive,json=endInclusive" json:"end_inclusive,omitempty"`
-	StartPostfixValue          []string `protobuf:"bytes,22,rep,name=start_postfix_value,json=startPostfixValue" json:"start_postfix_value,omitempty"`
-	EndPostfixValue            []string `protobuf:"bytes,23,rep,name=end_postfix_value,json=endPostfixValue" json:"end_postfix_value,omitempty"`
-	EndUnappliedLogTimestampUs *int64   `protobuf:"varint,19,opt,name=end_unapplied_log_timestamp_us,json=endUnappliedLogTimestampUs" json:"end_unapplied_log_timestamp_us,omitempty"`
-	XXX_NoUnkeyedLiteral       struct{} `json:"-"`
-	XXX_unrecognized           []byte   `json:"-"`
-	XXX_sizecache              int32    `json:"-"`
-}
+type CompiledCursor struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CompiledQuery_PrimaryScan) Reset()         { *m = CompiledQuery_PrimaryScan{} }
-func (m *CompiledQuery_PrimaryScan) String() string { return proto.CompactTextString(m) }
-func (*CompiledQuery_PrimaryScan) ProtoMessage()    {}
-func (*CompiledQuery_PrimaryScan) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{16, 0}
-}
-func (m *CompiledQuery_PrimaryScan) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompiledQuery_PrimaryScan.Unmarshal(m, b)
+	Position *CompiledCursor_PositionType `protobuf:"bytes,2,opt,name=Position,proto3,oneof" json:"Position,omitempty"`
 }
-func (m *CompiledQuery_PrimaryScan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompiledQuery_PrimaryScan.Marshal(b, m, deterministic)
-}
-func (dst *CompiledQuery_PrimaryScan) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompiledQuery_PrimaryScan.Merge(dst, src)
-}
-func (m *CompiledQuery_PrimaryScan) XXX_Size() int {
-	return xxx_messageInfo_CompiledQuery_PrimaryScan.Size(m)
+
+func (x *CompiledCursor) Reset() {
+	*x = CompiledCursor{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CompiledQuery_PrimaryScan) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompiledQuery_PrimaryScan.DiscardUnknown(m)
+
+func (x *CompiledCursor) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_CompiledQuery_PrimaryScan proto.InternalMessageInfo
+func (*CompiledCursor) ProtoMessage() {}
 
-func (m *CompiledQuery_PrimaryScan) GetIndexName() string {
-	if m != nil && m.IndexName != nil {
-		return *m.IndexName
+func (x *CompiledCursor) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 ""
+	return mi.MessageOf(x)
 }
 
-func (m *CompiledQuery_PrimaryScan) GetStartKey() string {
-	if m != nil && m.StartKey != nil {
-		return *m.StartKey
-	}
-	return ""
+// Deprecated: Use CompiledCursor.ProtoReflect.Descriptor instead.
+func (*CompiledCursor) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *CompiledQuery_PrimaryScan) GetStartInclusive() bool {
-	if m != nil && m.StartInclusive != nil {
-		return *m.StartInclusive
+func (x *CompiledCursor) GetPosition() *CompiledCursor_PositionType {
+	if x != nil {
+		return x.Position
 	}
-	return false
+	return nil
 }
 
-func (m *CompiledQuery_PrimaryScan) GetEndKey() string {
-	if m != nil && m.EndKey != nil {
-		return *m.EndKey
-	}
-	return ""
+type Cursor struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Cursor uint64  `protobuf:"fixed64,1,opt,name=cursor,proto3" json:"cursor,omitempty"`
+	App    *string `protobuf:"bytes,2,opt,name=app,proto3,oneof" json:"app,omitempty"`
 }
 
-func (m *CompiledQuery_PrimaryScan) GetEndInclusive() bool {
-	if m != nil && m.EndInclusive != nil {
-		return *m.EndInclusive
+func (x *Cursor) Reset() {
+	*x = Cursor{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return false
 }
 
-func (m *CompiledQuery_PrimaryScan) GetStartPostfixValue() []string {
-	if m != nil {
-		return m.StartPostfixValue
-	}
-	return nil
+func (x *Cursor) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *CompiledQuery_PrimaryScan) GetEndPostfixValue() []string {
-	if m != nil {
-		return m.EndPostfixValue
+func (*Cursor) ProtoMessage() {}
+
+func (x *Cursor) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 nil
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Cursor.ProtoReflect.Descriptor instead.
+func (*Cursor) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *CompiledQuery_PrimaryScan) GetEndUnappliedLogTimestampUs() int64 {
-	if m != nil && m.EndUnappliedLogTimestampUs != nil {
-		return *m.EndUnappliedLogTimestampUs
+func (x *Cursor) GetCursor() uint64 {
+	if x != nil {
+		return x.Cursor
 	}
 	return 0
 }
 
-type CompiledQuery_MergeJoinScan struct {
-	IndexName            *string  `protobuf:"bytes,8,req,name=index_name,json=indexName" json:"index_name,omitempty"`
-	PrefixValue          []string `protobuf:"bytes,9,rep,name=prefix_value,json=prefixValue" json:"prefix_value,omitempty"`
-	ValuePrefix          *bool    `protobuf:"varint,20,opt,name=value_prefix,json=valuePrefix,def=0" json:"value_prefix,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *Cursor) GetApp() string {
+	if x != nil && x.App != nil {
+		return *x.App
+	}
+	return ""
 }
 
-func (m *CompiledQuery_MergeJoinScan) Reset()         { *m = CompiledQuery_MergeJoinScan{} }
-func (m *CompiledQuery_MergeJoinScan) String() string { return proto.CompactTextString(m) }
-func (*CompiledQuery_MergeJoinScan) ProtoMessage()    {}
-func (*CompiledQuery_MergeJoinScan) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{16, 1}
+type Error struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *CompiledQuery_MergeJoinScan) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompiledQuery_MergeJoinScan.Unmarshal(m, b)
+
+func (x *Error) Reset() {
+	*x = Error{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CompiledQuery_MergeJoinScan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompiledQuery_MergeJoinScan.Marshal(b, m, deterministic)
+
+func (x *Error) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (dst *CompiledQuery_MergeJoinScan) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompiledQuery_MergeJoinScan.Merge(dst, src)
+
+func (*Error) ProtoMessage() {}
+
+func (x *Error) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
-func (m *CompiledQuery_MergeJoinScan) XXX_Size() int {
-	return xxx_messageInfo_CompiledQuery_MergeJoinScan.Size(m)
+
+// Deprecated: Use Error.ProtoReflect.Descriptor instead.
+func (*Error) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{19}
 }
-func (m *CompiledQuery_MergeJoinScan) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompiledQuery_MergeJoinScan.DiscardUnknown(m)
+
+type Cost struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	IndexWrites             *int32               `protobuf:"varint,1,opt,name=index_writes,json=indexWrites,proto3,oneof" json:"index_writes,omitempty"`
+	IndexWriteBytes         *int32               `protobuf:"varint,2,opt,name=index_write_bytes,json=indexWriteBytes,proto3,oneof" json:"index_write_bytes,omitempty"`
+	EntityWrites            *int32               `protobuf:"varint,3,opt,name=entity_writes,json=entityWrites,proto3,oneof" json:"entity_writes,omitempty"`
+	EntityWriteBytes        *int32               `protobuf:"varint,4,opt,name=entity_write_bytes,json=entityWriteBytes,proto3,oneof" json:"entity_write_bytes,omitempty"`
+	CommitCost              *Cost_CommitCostType `protobuf:"bytes,5,opt,name=CommitCost,proto3,oneof" json:"CommitCost,omitempty"`
+	ApproximateStorageDelta *int32               `protobuf:"varint,8,opt,name=approximate_storage_delta,json=approximateStorageDelta,proto3,oneof" json:"approximate_storage_delta,omitempty"`
+	IdSequenceUpdates       *int32               `protobuf:"varint,9,opt,name=id_sequence_updates,json=idSequenceUpdates,proto3,oneof" json:"id_sequence_updates,omitempty"`
 }
 
-var xxx_messageInfo_CompiledQuery_MergeJoinScan proto.InternalMessageInfo
+func (x *Cost) Reset() {
+	*x = Cost{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Cost) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
 
-const Default_CompiledQuery_MergeJoinScan_ValuePrefix bool = false
+func (*Cost) ProtoMessage() {}
 
-func (m *CompiledQuery_MergeJoinScan) GetIndexName() string {
-	if m != nil && m.IndexName != nil {
-		return *m.IndexName
+func (x *Cost) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 ""
+	return mi.MessageOf(x)
 }
 
-func (m *CompiledQuery_MergeJoinScan) GetPrefixValue() []string {
-	if m != nil {
-		return m.PrefixValue
+// Deprecated: Use Cost.ProtoReflect.Descriptor instead.
+func (*Cost) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *Cost) GetIndexWrites() int32 {
+	if x != nil && x.IndexWrites != nil {
+		return *x.IndexWrites
 	}
-	return nil
+	return 0
 }
 
-func (m *CompiledQuery_MergeJoinScan) GetValuePrefix() bool {
-	if m != nil && m.ValuePrefix != nil {
-		return *m.ValuePrefix
+func (x *Cost) GetIndexWriteBytes() int32 {
+	if x != nil && x.IndexWriteBytes != nil {
+		return *x.IndexWriteBytes
 	}
-	return Default_CompiledQuery_MergeJoinScan_ValuePrefix
+	return 0
 }
 
-type CompiledQuery_EntityFilter struct {
-	Distinct             *bool      `protobuf:"varint,14,opt,name=distinct,def=0" json:"distinct,omitempty"`
-	Kind                 *string    `protobuf:"bytes,17,opt,name=kind" json:"kind,omitempty"`
-	Ancestor             *Reference `protobuf:"bytes,18,opt,name=ancestor" json:"ancestor,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+func (x *Cost) GetEntityWrites() int32 {
+	if x != nil && x.EntityWrites != nil {
+		return *x.EntityWrites
+	}
+	return 0
 }
 
-func (m *CompiledQuery_EntityFilter) Reset()         { *m = CompiledQuery_EntityFilter{} }
-func (m *CompiledQuery_EntityFilter) String() string { return proto.CompactTextString(m) }
-func (*CompiledQuery_EntityFilter) ProtoMessage()    {}
-func (*CompiledQuery_EntityFilter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{16, 2}
+func (x *Cost) GetEntityWriteBytes() int32 {
+	if x != nil && x.EntityWriteBytes != nil {
+		return *x.EntityWriteBytes
+	}
+	return 0
+}
+
+func (x *Cost) GetCommitCost() *Cost_CommitCostType {
+	if x != nil {
+		return x.CommitCost
+	}
+	return nil
 }
-func (m *CompiledQuery_EntityFilter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompiledQuery_EntityFilter.Unmarshal(m, b)
+
+func (x *Cost) GetApproximateStorageDelta() int32 {
+	if x != nil && x.ApproximateStorageDelta != nil {
+		return *x.ApproximateStorageDelta
+	}
+	return 0
 }
-func (m *CompiledQuery_EntityFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompiledQuery_EntityFilter.Marshal(b, m, deterministic)
+
+func (x *Cost) GetIdSequenceUpdates() int32 {
+	if x != nil && x.IdSequenceUpdates != nil {
+		return *x.IdSequenceUpdates
+	}
+	return 0
 }
-func (dst *CompiledQuery_EntityFilter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompiledQuery_EntityFilter.Merge(dst, src)
+
+type GetRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Header        *InternalHeader `protobuf:"bytes,6,opt,name=header,proto3,oneof" json:"header,omitempty"`
+	Key           []*Reference    `protobuf:"bytes,1,rep,name=key,proto3" json:"key,omitempty"`
+	Transaction   *Transaction    `protobuf:"bytes,2,opt,name=transaction,proto3,oneof" json:"transaction,omitempty"`
+	FailoverMs    *int64          `protobuf:"varint,3,opt,name=failover_ms,json=failoverMs,proto3,oneof" json:"failover_ms,omitempty"`
+	Strong        *bool           `protobuf:"varint,4,opt,name=strong,proto3,oneof" json:"strong,omitempty"`
+	AllowDeferred *bool           `protobuf:"varint,5,opt,name=allow_deferred,json=allowDeferred,proto3,oneof" json:"allow_deferred,omitempty"`
 }
-func (m *CompiledQuery_EntityFilter) XXX_Size() int {
-	return xxx_messageInfo_CompiledQuery_EntityFilter.Size(m)
+
+func (x *GetRequest) Reset() {
+	*x = GetRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CompiledQuery_EntityFilter) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompiledQuery_EntityFilter.DiscardUnknown(m)
+
+func (x *GetRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_CompiledQuery_EntityFilter proto.InternalMessageInfo
+func (*GetRequest) ProtoMessage() {}
+
+func (x *GetRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
+}
 
-const Default_CompiledQuery_EntityFilter_Distinct bool = false
+// Deprecated: Use GetRequest.ProtoReflect.Descriptor instead.
+func (*GetRequest) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{21}
+}
 
-func (m *CompiledQuery_EntityFilter) GetDistinct() bool {
-	if m != nil && m.Distinct != nil {
-		return *m.Distinct
+func (x *GetRequest) GetHeader() *InternalHeader {
+	if x != nil {
+		return x.Header
 	}
-	return Default_CompiledQuery_EntityFilter_Distinct
+	return nil
 }
 
-func (m *CompiledQuery_EntityFilter) GetKind() string {
-	if m != nil && m.Kind != nil {
-		return *m.Kind
+func (x *GetRequest) GetKey() []*Reference {
+	if x != nil {
+		return x.Key
 	}
-	return ""
+	return nil
 }
 
-func (m *CompiledQuery_EntityFilter) GetAncestor() *Reference {
-	if m != nil {
-		return m.Ancestor
+func (x *GetRequest) GetTransaction() *Transaction {
+	if x != nil {
+		return x.Transaction
 	}
 	return nil
 }
 
-type CompiledCursor struct {
-	Position             *CompiledCursor_Position `protobuf:"group,2,opt,name=Position,json=position" json:"position,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+func (x *GetRequest) GetFailoverMs() int64 {
+	if x != nil && x.FailoverMs != nil {
+		return *x.FailoverMs
+	}
+	return 0
 }
 
-func (m *CompiledCursor) Reset()         { *m = CompiledCursor{} }
-func (m *CompiledCursor) String() string { return proto.CompactTextString(m) }
-func (*CompiledCursor) ProtoMessage()    {}
-func (*CompiledCursor) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{17}
+func (x *GetRequest) GetStrong() bool {
+	if x != nil && x.Strong != nil {
+		return *x.Strong
+	}
+	return false
 }
-func (m *CompiledCursor) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompiledCursor.Unmarshal(m, b)
+
+func (x *GetRequest) GetAllowDeferred() bool {
+	if x != nil && x.AllowDeferred != nil {
+		return *x.AllowDeferred
+	}
+	return false
 }
-func (m *CompiledCursor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompiledCursor.Marshal(b, m, deterministic)
+
+type GetResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Entity   []*GetResponse_EntityType `protobuf:"bytes,1,rep,name=Entity,proto3" json:"Entity,omitempty"`
+	Deferred []*Reference              `protobuf:"bytes,5,rep,name=deferred,proto3" json:"deferred,omitempty"`
+	InOrder  *bool                     `protobuf:"varint,6,opt,name=in_order,json=inOrder,proto3,oneof" json:"in_order,omitempty"`
 }
-func (dst *CompiledCursor) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompiledCursor.Merge(dst, src)
+
+func (x *GetResponse) Reset() {
+	*x = GetResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[22]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CompiledCursor) XXX_Size() int {
-	return xxx_messageInfo_CompiledCursor.Size(m)
+
+func (x *GetResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CompiledCursor) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompiledCursor.DiscardUnknown(m)
+
+func (*GetResponse) ProtoMessage() {}
+
+func (x *GetResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_CompiledCursor proto.InternalMessageInfo
+// Deprecated: Use GetResponse.ProtoReflect.Descriptor instead.
+func (*GetResponse) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{22}
+}
 
-func (m *CompiledCursor) GetPosition() *CompiledCursor_Position {
-	if m != nil {
-		return m.Position
+func (x *GetResponse) GetEntity() []*GetResponse_EntityType {
+	if x != nil {
+		return x.Entity
 	}
 	return nil
 }
 
-type CompiledCursor_Position struct {
-	StartKey             *string                               `protobuf:"bytes,27,opt,name=start_key,json=startKey" json:"start_key,omitempty"`
-	Indexvalue           []*CompiledCursor_Position_IndexValue `protobuf:"group,29,rep,name=IndexValue,json=indexvalue" json:"indexvalue,omitempty"`
-	Key                  *Reference                            `protobuf:"bytes,32,opt,name=key" json:"key,omitempty"`
-	StartInclusive       *bool                                 `protobuf:"varint,28,opt,name=start_inclusive,json=startInclusive,def=1" json:"start_inclusive,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
-	XXX_unrecognized     []byte                                `json:"-"`
-	XXX_sizecache        int32                                 `json:"-"`
+func (x *GetResponse) GetDeferred() []*Reference {
+	if x != nil {
+		return x.Deferred
+	}
+	return nil
 }
 
-func (m *CompiledCursor_Position) Reset()         { *m = CompiledCursor_Position{} }
-func (m *CompiledCursor_Position) String() string { return proto.CompactTextString(m) }
-func (*CompiledCursor_Position) ProtoMessage()    {}
-func (*CompiledCursor_Position) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{17, 0}
+func (x *GetResponse) GetInOrder() bool {
+	if x != nil && x.InOrder != nil {
+		return *x.InOrder
+	}
+	return false
 }
-func (m *CompiledCursor_Position) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompiledCursor_Position.Unmarshal(m, b)
+
+type PutRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Header         *InternalHeader          `protobuf:"bytes,11,opt,name=header,proto3,oneof" json:"header,omitempty"`
+	Entity         []*EntityProto           `protobuf:"bytes,1,rep,name=entity,proto3" json:"entity,omitempty"`
+	Transaction    *Transaction             `protobuf:"bytes,2,opt,name=transaction,proto3,oneof" json:"transaction,omitempty"`
+	CompositeIndex []*CompositeIndex        `protobuf:"bytes,3,rep,name=composite_index,json=compositeIndex,proto3" json:"composite_index,omitempty"`
+	Trusted        *bool                    `protobuf:"varint,4,opt,name=trusted,proto3,oneof" json:"trusted,omitempty"`
+	Force          *bool                    `protobuf:"varint,7,opt,name=force,proto3,oneof" json:"force,omitempty"`
+	MarkChanges    *bool                    `protobuf:"varint,8,opt,name=mark_changes,json=markChanges,proto3,oneof" json:"mark_changes,omitempty"`
+	Snapshot       []*Snapshot              `protobuf:"bytes,9,rep,name=snapshot,proto3" json:"snapshot,omitempty"`
+	AutoIdPolicy   *PutRequest_AutoIdPolicy `protobuf:"varint,10,opt,name=auto_id_policy,json=autoIdPolicy,proto3,enum=appengine.PutRequest_AutoIdPolicy,oneof" json:"auto_id_policy,omitempty"`
 }
-func (m *CompiledCursor_Position) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompiledCursor_Position.Marshal(b, m, deterministic)
+
+func (x *PutRequest) Reset() {
+	*x = PutRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[23]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (dst *CompiledCursor_Position) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompiledCursor_Position.Merge(dst, src)
+
+func (x *PutRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CompiledCursor_Position) XXX_Size() int {
-	return xxx_messageInfo_CompiledCursor_Position.Size(m)
+
+func (*PutRequest) ProtoMessage() {}
+
+func (x *PutRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
-func (m *CompiledCursor_Position) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompiledCursor_Position.DiscardUnknown(m)
+
+// Deprecated: Use PutRequest.ProtoReflect.Descriptor instead.
+func (*PutRequest) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{23}
 }
 
-var xxx_messageInfo_CompiledCursor_Position proto.InternalMessageInfo
+func (x *PutRequest) GetHeader() *InternalHeader {
+	if x != nil {
+		return x.Header
+	}
+	return nil
+}
 
-const Default_CompiledCursor_Position_StartInclusive bool = true
+func (x *PutRequest) GetEntity() []*EntityProto {
+	if x != nil {
+		return x.Entity
+	}
+	return nil
+}
 
-func (m *CompiledCursor_Position) GetStartKey() string {
-	if m != nil && m.StartKey != nil {
-		return *m.StartKey
+func (x *PutRequest) GetTransaction() *Transaction {
+	if x != nil {
+		return x.Transaction
 	}
-	return ""
+	return nil
 }
 
-func (m *CompiledCursor_Position) GetIndexvalue() []*CompiledCursor_Position_IndexValue {
-	if m != nil {
-		return m.Indexvalue
+func (x *PutRequest) GetCompositeIndex() []*CompositeIndex {
+	if x != nil {
+		return x.CompositeIndex
 	}
 	return nil
 }
 
-func (m *CompiledCursor_Position) GetKey() *Reference {
-	if m != nil {
-		return m.Key
+func (x *PutRequest) GetTrusted() bool {
+	if x != nil && x.Trusted != nil {
+		return *x.Trusted
+	}
+	return false
+}
+
+func (x *PutRequest) GetForce() bool {
+	if x != nil && x.Force != nil {
+		return *x.Force
+	}
+	return false
+}
+
+func (x *PutRequest) GetMarkChanges() bool {
+	if x != nil && x.MarkChanges != nil {
+		return *x.MarkChanges
+	}
+	return false
+}
+
+func (x *PutRequest) GetSnapshot() []*Snapshot {
+	if x != nil {
+		return x.Snapshot
 	}
 	return nil
 }
 
-func (m *CompiledCursor_Position) GetStartInclusive() bool {
-	if m != nil && m.StartInclusive != nil {
-		return *m.StartInclusive
+func (x *PutRequest) GetAutoIdPolicy() PutRequest_AutoIdPolicy {
+	if x != nil && x.AutoIdPolicy != nil {
+		return *x.AutoIdPolicy
 	}
-	return Default_CompiledCursor_Position_StartInclusive
+	return PutRequest_CURRENT
 }
 
-type CompiledCursor_Position_IndexValue struct {
-	Property             *string        `protobuf:"bytes,30,opt,name=property" json:"property,omitempty"`
-	Value                *PropertyValue `protobuf:"bytes,31,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+type PutResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Key     []*Reference `protobuf:"bytes,1,rep,name=key,proto3" json:"key,omitempty"`
+	Cost    *Cost        `protobuf:"bytes,2,opt,name=cost,proto3,oneof" json:"cost,omitempty"`
+	Version []int64      `protobuf:"varint,3,rep,packed,name=version,proto3" json:"version,omitempty"`
 }
 
-func (m *CompiledCursor_Position_IndexValue) Reset()         { *m = CompiledCursor_Position_IndexValue{} }
-func (m *CompiledCursor_Position_IndexValue) String() string { return proto.CompactTextString(m) }
-func (*CompiledCursor_Position_IndexValue) ProtoMessage()    {}
-func (*CompiledCursor_Position_IndexValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{17, 0, 0}
+func (x *PutResponse) Reset() {
+	*x = PutResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[24]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CompiledCursor_Position_IndexValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompiledCursor_Position_IndexValue.Unmarshal(m, b)
+
+func (x *PutResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CompiledCursor_Position_IndexValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompiledCursor_Position_IndexValue.Marshal(b, m, deterministic)
+
+func (*PutResponse) ProtoMessage() {}
+
+func (x *PutResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
-func (dst *CompiledCursor_Position_IndexValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompiledCursor_Position_IndexValue.Merge(dst, src)
+
+// Deprecated: Use PutResponse.ProtoReflect.Descriptor instead.
+func (*PutResponse) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{24}
 }
-func (m *CompiledCursor_Position_IndexValue) XXX_Size() int {
-	return xxx_messageInfo_CompiledCursor_Position_IndexValue.Size(m)
+
+func (x *PutResponse) GetKey() []*Reference {
+	if x != nil {
+		return x.Key
+	}
+	return nil
 }
-func (m *CompiledCursor_Position_IndexValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompiledCursor_Position_IndexValue.DiscardUnknown(m)
+
+func (x *PutResponse) GetCost() *Cost {
+	if x != nil {
+		return x.Cost
+	}
+	return nil
 }
 
-var xxx_messageInfo_CompiledCursor_Position_IndexValue proto.InternalMessageInfo
+func (x *PutResponse) GetVersion() []int64 {
+	if x != nil {
+		return x.Version
+	}
+	return nil
+}
 
-func (m *CompiledCursor_Position_IndexValue) GetProperty() string {
-	if m != nil && m.Property != nil {
-		return *m.Property
+type TouchRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Header         *InternalHeader   `protobuf:"bytes,10,opt,name=header,proto3,oneof" json:"header,omitempty"`
+	Key            []*Reference      `protobuf:"bytes,1,rep,name=key,proto3" json:"key,omitempty"`
+	CompositeIndex []*CompositeIndex `protobuf:"bytes,2,rep,name=composite_index,json=compositeIndex,proto3" json:"composite_index,omitempty"`
+	Force          *bool             `protobuf:"varint,3,opt,name=force,proto3,oneof" json:"force,omitempty"`
+	Snapshot       []*Snapshot       `protobuf:"bytes,9,rep,name=snapshot,proto3" json:"snapshot,omitempty"`
+}
+
+func (x *TouchRequest) Reset() {
+	*x = TouchRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[25]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-func (m *CompiledCursor_Position_IndexValue) GetValue() *PropertyValue {
-	if m != nil {
-		return m.Value
+func (x *TouchRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TouchRequest) ProtoMessage() {}
+
+func (x *TouchRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 TouchRequest.ProtoReflect.Descriptor instead.
+func (*TouchRequest) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *TouchRequest) GetHeader() *InternalHeader {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-type Cursor struct {
-	Cursor               *uint64  `protobuf:"fixed64,1,req,name=cursor" json:"cursor,omitempty"`
-	App                  *string  `protobuf:"bytes,2,opt,name=app" json:"app,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TouchRequest) GetKey() []*Reference {
+	if x != nil {
+		return x.Key
+	}
+	return nil
 }
 
-func (m *Cursor) Reset()         { *m = Cursor{} }
-func (m *Cursor) String() string { return proto.CompactTextString(m) }
-func (*Cursor) ProtoMessage()    {}
-func (*Cursor) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{18}
+func (x *TouchRequest) GetCompositeIndex() []*CompositeIndex {
+	if x != nil {
+		return x.CompositeIndex
+	}
+	return nil
 }
-func (m *Cursor) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Cursor.Unmarshal(m, b)
+
+func (x *TouchRequest) GetForce() bool {
+	if x != nil && x.Force != nil {
+		return *x.Force
+	}
+	return false
 }
-func (m *Cursor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Cursor.Marshal(b, m, deterministic)
+
+func (x *TouchRequest) GetSnapshot() []*Snapshot {
+	if x != nil {
+		return x.Snapshot
+	}
+	return nil
 }
-func (dst *Cursor) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Cursor.Merge(dst, src)
+
+type TouchResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Cost *Cost `protobuf:"bytes,1,opt,name=cost,proto3,oneof" json:"cost,omitempty"`
 }
-func (m *Cursor) XXX_Size() int {
-	return xxx_messageInfo_Cursor.Size(m)
+
+func (x *TouchResponse) Reset() {
+	*x = TouchResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[26]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Cursor) XXX_DiscardUnknown() {
-	xxx_messageInfo_Cursor.DiscardUnknown(m)
+
+func (x *TouchResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_Cursor proto.InternalMessageInfo
+func (*TouchResponse) ProtoMessage() {}
 
-func (m *Cursor) GetCursor() uint64 {
-	if m != nil && m.Cursor != nil {
-		return *m.Cursor
+func (x *TouchResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 0
+	return mi.MessageOf(x)
 }
 
-func (m *Cursor) GetApp() string {
-	if m != nil && m.App != nil {
-		return *m.App
+// Deprecated: Use TouchResponse.ProtoReflect.Descriptor instead.
+func (*TouchResponse) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *TouchResponse) GetCost() *Cost {
+	if x != nil {
+		return x.Cost
 	}
-	return ""
+	return nil
 }
 
-type Error struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+type DeleteRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Header      *InternalHeader `protobuf:"bytes,10,opt,name=header,proto3,oneof" json:"header,omitempty"`
+	Key         []*Reference    `protobuf:"bytes,6,rep,name=key,proto3" json:"key,omitempty"`
+	Transaction *Transaction    `protobuf:"bytes,5,opt,name=transaction,proto3,oneof" json:"transaction,omitempty"`
+	Trusted     *bool           `protobuf:"varint,4,opt,name=trusted,proto3,oneof" json:"trusted,omitempty"`
+	Force       *bool           `protobuf:"varint,7,opt,name=force,proto3,oneof" json:"force,omitempty"`
+	MarkChanges *bool           `protobuf:"varint,8,opt,name=mark_changes,json=markChanges,proto3,oneof" json:"mark_changes,omitempty"`
+	Snapshot    []*Snapshot     `protobuf:"bytes,9,rep,name=snapshot,proto3" json:"snapshot,omitempty"`
 }
 
-func (m *Error) Reset()         { *m = Error{} }
-func (m *Error) String() string { return proto.CompactTextString(m) }
-func (*Error) ProtoMessage()    {}
-func (*Error) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{19}
+func (x *DeleteRequest) Reset() {
+	*x = DeleteRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[27]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Error) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Error.Unmarshal(m, b)
+
+func (x *DeleteRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Error) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Error.Marshal(b, m, deterministic)
+
+func (*DeleteRequest) ProtoMessage() {}
+
+func (x *DeleteRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
-func (dst *Error) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Error.Merge(dst, src)
+
+// Deprecated: Use DeleteRequest.ProtoReflect.Descriptor instead.
+func (*DeleteRequest) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{27}
 }
-func (m *Error) XXX_Size() int {
-	return xxx_messageInfo_Error.Size(m)
+
+func (x *DeleteRequest) GetHeader() *InternalHeader {
+	if x != nil {
+		return x.Header
+	}
+	return nil
 }
-func (m *Error) XXX_DiscardUnknown() {
-	xxx_messageInfo_Error.DiscardUnknown(m)
+
+func (x *DeleteRequest) GetKey() []*Reference {
+	if x != nil {
+		return x.Key
+	}
+	return nil
 }
 
-var xxx_messageInfo_Error proto.InternalMessageInfo
+func (x *DeleteRequest) GetTransaction() *Transaction {
+	if x != nil {
+		return x.Transaction
+	}
+	return nil
+}
 
-type Cost struct {
-	IndexWrites             *int32           `protobuf:"varint,1,opt,name=index_writes,json=indexWrites" json:"index_writes,omitempty"`
-	IndexWriteBytes         *int32           `protobuf:"varint,2,opt,name=index_write_bytes,json=indexWriteBytes" json:"index_write_bytes,omitempty"`
-	EntityWrites            *int32           `protobuf:"varint,3,opt,name=entity_writes,json=entityWrites" json:"entity_writes,omitempty"`
-	EntityWriteBytes        *int32           `protobuf:"varint,4,opt,name=entity_write_bytes,json=entityWriteBytes" json:"entity_write_bytes,omitempty"`
-	Commitcost              *Cost_CommitCost `protobuf:"group,5,opt,name=CommitCost,json=commitcost" json:"commitcost,omitempty"`
-	ApproximateStorageDelta *int32           `protobuf:"varint,8,opt,name=approximate_storage_delta,json=approximateStorageDelta" json:"approximate_storage_delta,omitempty"`
-	IdSequenceUpdates       *int32           `protobuf:"varint,9,opt,name=id_sequence_updates,json=idSequenceUpdates" json:"id_sequence_updates,omitempty"`
-	XXX_NoUnkeyedLiteral    struct{}         `json:"-"`
-	XXX_unrecognized        []byte           `json:"-"`
-	XXX_sizecache           int32            `json:"-"`
-}
-
-func (m *Cost) Reset()         { *m = Cost{} }
-func (m *Cost) String() string { return proto.CompactTextString(m) }
-func (*Cost) ProtoMessage()    {}
-func (*Cost) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{20}
+func (x *DeleteRequest) GetTrusted() bool {
+	if x != nil && x.Trusted != nil {
+		return *x.Trusted
+	}
+	return false
+}
+
+func (x *DeleteRequest) GetForce() bool {
+	if x != nil && x.Force != nil {
+		return *x.Force
+	}
+	return false
 }
-func (m *Cost) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Cost.Unmarshal(m, b)
+
+func (x *DeleteRequest) GetMarkChanges() bool {
+	if x != nil && x.MarkChanges != nil {
+		return *x.MarkChanges
+	}
+	return false
 }
-func (m *Cost) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Cost.Marshal(b, m, deterministic)
+
+func (x *DeleteRequest) GetSnapshot() []*Snapshot {
+	if x != nil {
+		return x.Snapshot
+	}
+	return nil
 }
-func (dst *Cost) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Cost.Merge(dst, src)
+
+type DeleteResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Cost    *Cost   `protobuf:"bytes,1,opt,name=cost,proto3,oneof" json:"cost,omitempty"`
+	Version []int64 `protobuf:"varint,3,rep,packed,name=version,proto3" json:"version,omitempty"`
 }
-func (m *Cost) XXX_Size() int {
-	return xxx_messageInfo_Cost.Size(m)
+
+func (x *DeleteResponse) Reset() {
+	*x = DeleteResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[28]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Cost) XXX_DiscardUnknown() {
-	xxx_messageInfo_Cost.DiscardUnknown(m)
+
+func (x *DeleteResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_Cost proto.InternalMessageInfo
+func (*DeleteResponse) ProtoMessage() {}
 
-func (m *Cost) GetIndexWrites() int32 {
-	if m != nil && m.IndexWrites != nil {
-		return *m.IndexWrites
+func (x *DeleteResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 0
+	return mi.MessageOf(x)
 }
 
-func (m *Cost) GetIndexWriteBytes() int32 {
-	if m != nil && m.IndexWriteBytes != nil {
-		return *m.IndexWriteBytes
+// Deprecated: Use DeleteResponse.ProtoReflect.Descriptor instead.
+func (*DeleteResponse) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *DeleteResponse) GetCost() *Cost {
+	if x != nil {
+		return x.Cost
 	}
-	return 0
+	return nil
 }
 
-func (m *Cost) GetEntityWrites() int32 {
-	if m != nil && m.EntityWrites != nil {
-		return *m.EntityWrites
+func (x *DeleteResponse) GetVersion() []int64 {
+	if x != nil {
+		return x.Version
 	}
-	return 0
+	return nil
 }
 
-func (m *Cost) GetEntityWriteBytes() int32 {
-	if m != nil && m.EntityWriteBytes != nil {
-		return *m.EntityWriteBytes
+type NextRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Header  *InternalHeader `protobuf:"bytes,5,opt,name=header,proto3,oneof" json:"header,omitempty"`
+	Cursor  *Cursor         `protobuf:"bytes,1,opt,name=cursor,proto3" json:"cursor,omitempty"`
+	Count   *int32          `protobuf:"varint,2,opt,name=count,proto3,oneof" json:"count,omitempty"`
+	Offset  *int32          `protobuf:"varint,4,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+	Compile *bool           `protobuf:"varint,3,opt,name=compile,proto3,oneof" json:"compile,omitempty"`
+}
+
+func (x *NextRequest) Reset() {
+	*x = NextRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[29]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (m *Cost) GetCommitcost() *Cost_CommitCost {
-	if m != nil {
-		return m.Commitcost
+func (x *NextRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NextRequest) ProtoMessage() {}
+
+func (x *NextRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 NextRequest.ProtoReflect.Descriptor instead.
+func (*NextRequest) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *NextRequest) GetHeader() *InternalHeader {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-func (m *Cost) GetApproximateStorageDelta() int32 {
-	if m != nil && m.ApproximateStorageDelta != nil {
-		return *m.ApproximateStorageDelta
+func (x *NextRequest) GetCursor() *Cursor {
+	if x != nil {
+		return x.Cursor
+	}
+	return nil
+}
+
+func (x *NextRequest) GetCount() int32 {
+	if x != nil && x.Count != nil {
+		return *x.Count
 	}
 	return 0
 }
 
-func (m *Cost) GetIdSequenceUpdates() int32 {
-	if m != nil && m.IdSequenceUpdates != nil {
-		return *m.IdSequenceUpdates
+func (x *NextRequest) GetOffset() int32 {
+	if x != nil && x.Offset != nil {
+		return *x.Offset
 	}
 	return 0
 }
 
-type Cost_CommitCost struct {
-	RequestedEntityPuts    *int32   `protobuf:"varint,6,opt,name=requested_entity_puts,json=requestedEntityPuts" json:"requested_entity_puts,omitempty"`
-	RequestedEntityDeletes *int32   `protobuf:"varint,7,opt,name=requested_entity_deletes,json=requestedEntityDeletes" json:"requested_entity_deletes,omitempty"`
-	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
-	XXX_unrecognized       []byte   `json:"-"`
-	XXX_sizecache          int32    `json:"-"`
+func (x *NextRequest) GetCompile() bool {
+	if x != nil && x.Compile != nil {
+		return *x.Compile
+	}
+	return false
 }
 
-func (m *Cost_CommitCost) Reset()         { *m = Cost_CommitCost{} }
-func (m *Cost_CommitCost) String() string { return proto.CompactTextString(m) }
-func (*Cost_CommitCost) ProtoMessage()    {}
-func (*Cost_CommitCost) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{20, 0}
+type QueryResult struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Cursor         *Cursor           `protobuf:"bytes,1,opt,name=cursor,proto3,oneof" json:"cursor,omitempty"`
+	Result         []*EntityProto    `protobuf:"bytes,2,rep,name=result,proto3" json:"result,omitempty"`
+	SkippedResults *int32            `protobuf:"varint,7,opt,name=skipped_results,json=skippedResults,proto3,oneof" json:"skipped_results,omitempty"`
+	MoreResults    bool              `protobuf:"varint,3,opt,name=more_results,json=moreResults,proto3" json:"more_results,omitempty"`
+	KeysOnly       *bool             `protobuf:"varint,4,opt,name=keys_only,json=keysOnly,proto3,oneof" json:"keys_only,omitempty"`
+	IndexOnly      *bool             `protobuf:"varint,9,opt,name=index_only,json=indexOnly,proto3,oneof" json:"index_only,omitempty"`
+	SmallOps       *bool             `protobuf:"varint,10,opt,name=small_ops,json=smallOps,proto3,oneof" json:"small_ops,omitempty"`
+	CompiledQuery  *CompiledQuery    `protobuf:"bytes,5,opt,name=compiled_query,json=compiledQuery,proto3,oneof" json:"compiled_query,omitempty"`
+	CompiledCursor *CompiledCursor   `protobuf:"bytes,6,opt,name=compiled_cursor,json=compiledCursor,proto3,oneof" json:"compiled_cursor,omitempty"`
+	Index          []*CompositeIndex `protobuf:"bytes,8,rep,name=index,proto3" json:"index,omitempty"`
+	Version        []int64           `protobuf:"varint,11,rep,packed,name=version,proto3" json:"version,omitempty"`
 }
-func (m *Cost_CommitCost) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Cost_CommitCost.Unmarshal(m, b)
+
+func (x *QueryResult) Reset() {
+	*x = QueryResult{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[30]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Cost_CommitCost) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Cost_CommitCost.Marshal(b, m, deterministic)
+
+func (x *QueryResult) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (dst *Cost_CommitCost) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Cost_CommitCost.Merge(dst, src)
+
+func (*QueryResult) ProtoMessage() {}
+
+func (x *QueryResult) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
-func (m *Cost_CommitCost) XXX_Size() int {
-	return xxx_messageInfo_Cost_CommitCost.Size(m)
+
+// Deprecated: Use QueryResult.ProtoReflect.Descriptor instead.
+func (*QueryResult) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{30}
 }
-func (m *Cost_CommitCost) XXX_DiscardUnknown() {
-	xxx_messageInfo_Cost_CommitCost.DiscardUnknown(m)
+
+func (x *QueryResult) GetCursor() *Cursor {
+	if x != nil {
+		return x.Cursor
+	}
+	return nil
 }
 
-var xxx_messageInfo_Cost_CommitCost proto.InternalMessageInfo
+func (x *QueryResult) GetResult() []*EntityProto {
+	if x != nil {
+		return x.Result
+	}
+	return nil
+}
 
-func (m *Cost_CommitCost) GetRequestedEntityPuts() int32 {
-	if m != nil && m.RequestedEntityPuts != nil {
-		return *m.RequestedEntityPuts
+func (x *QueryResult) GetSkippedResults() int32 {
+	if x != nil && x.SkippedResults != nil {
+		return *x.SkippedResults
 	}
 	return 0
 }
 
-func (m *Cost_CommitCost) GetRequestedEntityDeletes() int32 {
-	if m != nil && m.RequestedEntityDeletes != nil {
-		return *m.RequestedEntityDeletes
+func (x *QueryResult) GetMoreResults() bool {
+	if x != nil {
+		return x.MoreResults
 	}
-	return 0
+	return false
 }
 
-type GetRequest struct {
-	Header               *InternalHeader `protobuf:"bytes,6,opt,name=header" json:"header,omitempty"`
-	Key                  []*Reference    `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"`
-	Transaction          *Transaction    `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"`
-	FailoverMs           *int64          `protobuf:"varint,3,opt,name=failover_ms,json=failoverMs" json:"failover_ms,omitempty"`
-	Strong               *bool           `protobuf:"varint,4,opt,name=strong" json:"strong,omitempty"`
-	AllowDeferred        *bool           `protobuf:"varint,5,opt,name=allow_deferred,json=allowDeferred,def=0" json:"allow_deferred,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *GetRequest) Reset()         { *m = GetRequest{} }
-func (m *GetRequest) String() string { return proto.CompactTextString(m) }
-func (*GetRequest) ProtoMessage()    {}
-func (*GetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{21}
+func (x *QueryResult) GetKeysOnly() bool {
+	if x != nil && x.KeysOnly != nil {
+		return *x.KeysOnly
+	}
+	return false
+}
+
+func (x *QueryResult) GetIndexOnly() bool {
+	if x != nil && x.IndexOnly != nil {
+		return *x.IndexOnly
+	}
+	return false
 }
-func (m *GetRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetRequest.Unmarshal(m, b)
+
+func (x *QueryResult) GetSmallOps() bool {
+	if x != nil && x.SmallOps != nil {
+		return *x.SmallOps
+	}
+	return false
 }
-func (m *GetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetRequest.Marshal(b, m, deterministic)
+
+func (x *QueryResult) GetCompiledQuery() *CompiledQuery {
+	if x != nil {
+		return x.CompiledQuery
+	}
+	return nil
 }
-func (dst *GetRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetRequest.Merge(dst, src)
+
+func (x *QueryResult) GetCompiledCursor() *CompiledCursor {
+	if x != nil {
+		return x.CompiledCursor
+	}
+	return nil
 }
-func (m *GetRequest) XXX_Size() int {
-	return xxx_messageInfo_GetRequest.Size(m)
+
+func (x *QueryResult) GetIndex() []*CompositeIndex {
+	if x != nil {
+		return x.Index
+	}
+	return nil
 }
-func (m *GetRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetRequest.DiscardUnknown(m)
+
+func (x *QueryResult) GetVersion() []int64 {
+	if x != nil {
+		return x.Version
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetRequest proto.InternalMessageInfo
+type AllocateIdsRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-const Default_GetRequest_AllowDeferred bool = false
+	Header   *InternalHeader `protobuf:"bytes,4,opt,name=header,proto3,oneof" json:"header,omitempty"`
+	ModelKey *Reference      `protobuf:"bytes,1,opt,name=model_key,json=modelKey,proto3,oneof" json:"model_key,omitempty"`
+	Size     *int64          `protobuf:"varint,2,opt,name=size,proto3,oneof" json:"size,omitempty"`
+	Max      *int64          `protobuf:"varint,3,opt,name=max,proto3,oneof" json:"max,omitempty"`
+	Reserve  []*Reference    `protobuf:"bytes,5,rep,name=reserve,proto3" json:"reserve,omitempty"`
+}
 
-func (m *GetRequest) GetHeader() *InternalHeader {
-	if m != nil {
-		return m.Header
+func (x *AllocateIdsRequest) Reset() {
+	*x = AllocateIdsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[31]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *AllocateIdsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AllocateIdsRequest) ProtoMessage() {}
+
+func (x *AllocateIdsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 AllocateIdsRequest.ProtoReflect.Descriptor instead.
+func (*AllocateIdsRequest) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *AllocateIdsRequest) GetHeader() *InternalHeader {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-func (m *GetRequest) GetKey() []*Reference {
-	if m != nil {
-		return m.Key
+func (x *AllocateIdsRequest) GetModelKey() *Reference {
+	if x != nil {
+		return x.ModelKey
 	}
 	return nil
 }
 
-func (m *GetRequest) GetTransaction() *Transaction {
-	if m != nil {
-		return m.Transaction
+func (x *AllocateIdsRequest) GetSize() int64 {
+	if x != nil && x.Size != nil {
+		return *x.Size
+	}
+	return 0
+}
+
+func (x *AllocateIdsRequest) GetMax() int64 {
+	if x != nil && x.Max != nil {
+		return *x.Max
+	}
+	return 0
+}
+
+func (x *AllocateIdsRequest) GetReserve() []*Reference {
+	if x != nil {
+		return x.Reserve
 	}
 	return nil
 }
 
-func (m *GetRequest) GetFailoverMs() int64 {
-	if m != nil && m.FailoverMs != nil {
-		return *m.FailoverMs
+type AllocateIdsResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"`
+	End   int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
+	Cost  *Cost `protobuf:"bytes,3,opt,name=cost,proto3,oneof" json:"cost,omitempty"`
+}
+
+func (x *AllocateIdsResponse) Reset() {
+	*x = AllocateIdsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[32]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *AllocateIdsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AllocateIdsResponse) ProtoMessage() {}
+
+func (x *AllocateIdsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 AllocateIdsResponse.ProtoReflect.Descriptor instead.
+func (*AllocateIdsResponse) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{32}
+}
+
+func (x *AllocateIdsResponse) GetStart() int64 {
+	if x != nil {
+		return x.Start
 	}
 	return 0
 }
 
-func (m *GetRequest) GetStrong() bool {
-	if m != nil && m.Strong != nil {
-		return *m.Strong
+func (x *AllocateIdsResponse) GetEnd() int64 {
+	if x != nil {
+		return x.End
 	}
-	return false
+	return 0
 }
 
-func (m *GetRequest) GetAllowDeferred() bool {
-	if m != nil && m.AllowDeferred != nil {
-		return *m.AllowDeferred
+func (x *AllocateIdsResponse) GetCost() *Cost {
+	if x != nil {
+		return x.Cost
 	}
-	return Default_GetRequest_AllowDeferred
+	return nil
 }
 
-type GetResponse struct {
-	Entity               []*GetResponse_Entity `protobuf:"group,1,rep,name=Entity,json=entity" json:"entity,omitempty"`
-	Deferred             []*Reference          `protobuf:"bytes,5,rep,name=deferred" json:"deferred,omitempty"`
-	InOrder              *bool                 `protobuf:"varint,6,opt,name=in_order,json=inOrder,def=1" json:"in_order,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+type CompositeIndices struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Index []*CompositeIndex `protobuf:"bytes,1,rep,name=index,proto3" json:"index,omitempty"`
 }
 
-func (m *GetResponse) Reset()         { *m = GetResponse{} }
-func (m *GetResponse) String() string { return proto.CompactTextString(m) }
-func (*GetResponse) ProtoMessage()    {}
-func (*GetResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{22}
+func (x *CompositeIndices) Reset() {
+	*x = CompositeIndices{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[33]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetResponse.Unmarshal(m, b)
+
+func (x *CompositeIndices) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetResponse.Marshal(b, m, deterministic)
+
+func (*CompositeIndices) ProtoMessage() {}
+
+func (x *CompositeIndices) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
-func (dst *GetResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetResponse.Merge(dst, src)
+
+// Deprecated: Use CompositeIndices.ProtoReflect.Descriptor instead.
+func (*CompositeIndices) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{33}
 }
-func (m *GetResponse) XXX_Size() int {
-	return xxx_messageInfo_GetResponse.Size(m)
+
+func (x *CompositeIndices) GetIndex() []*CompositeIndex {
+	if x != nil {
+		return x.Index
+	}
+	return nil
 }
-func (m *GetResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetResponse.DiscardUnknown(m)
+
+type AddActionsRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Header      *InternalHeader `protobuf:"bytes,3,opt,name=header,proto3,oneof" json:"header,omitempty"`
+	Transaction *Transaction    `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"`
+	Action      []*Action       `protobuf:"bytes,2,rep,name=action,proto3" json:"action,omitempty"`
 }
 
-var xxx_messageInfo_GetResponse proto.InternalMessageInfo
+func (x *AddActionsRequest) Reset() {
+	*x = AddActionsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[34]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *AddActionsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
 
-const Default_GetResponse_InOrder bool = true
+func (*AddActionsRequest) ProtoMessage() {}
 
-func (m *GetResponse) GetEntity() []*GetResponse_Entity {
-	if m != nil {
-		return m.Entity
+func (x *AddActionsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 AddActionsRequest.ProtoReflect.Descriptor instead.
+func (*AddActionsRequest) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *AddActionsRequest) GetHeader() *InternalHeader {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-func (m *GetResponse) GetDeferred() []*Reference {
-	if m != nil {
-		return m.Deferred
+func (x *AddActionsRequest) GetTransaction() *Transaction {
+	if x != nil {
+		return x.Transaction
 	}
 	return nil
 }
 
-func (m *GetResponse) GetInOrder() bool {
-	if m != nil && m.InOrder != nil {
-		return *m.InOrder
+func (x *AddActionsRequest) GetAction() []*Action {
+	if x != nil {
+		return x.Action
 	}
-	return Default_GetResponse_InOrder
+	return nil
 }
 
-type GetResponse_Entity struct {
-	Entity               *EntityProto `protobuf:"bytes,2,opt,name=entity" json:"entity,omitempty"`
-	Key                  *Reference   `protobuf:"bytes,4,opt,name=key" json:"key,omitempty"`
-	Version              *int64       `protobuf:"varint,3,opt,name=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+type AddActionsResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *GetResponse_Entity) Reset()         { *m = GetResponse_Entity{} }
-func (m *GetResponse_Entity) String() string { return proto.CompactTextString(m) }
-func (*GetResponse_Entity) ProtoMessage()    {}
-func (*GetResponse_Entity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{22, 0}
+func (x *AddActionsResponse) Reset() {
+	*x = AddActionsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[35]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetResponse_Entity) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetResponse_Entity.Unmarshal(m, b)
+
+func (x *AddActionsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AddActionsResponse) ProtoMessage() {}
+
+func (x *AddActionsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 AddActionsResponse.ProtoReflect.Descriptor instead.
+func (*AddActionsResponse) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{35}
 }
-func (m *GetResponse_Entity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetResponse_Entity.Marshal(b, m, deterministic)
+
+type BeginTransactionRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Header              *InternalHeader                          `protobuf:"bytes,3,opt,name=header,proto3,oneof" json:"header,omitempty"`
+	App                 string                                   `protobuf:"bytes,1,opt,name=app,proto3" json:"app,omitempty"`
+	AllowMultipleEg     *bool                                    `protobuf:"varint,2,opt,name=allow_multiple_eg,json=allowMultipleEg,proto3,oneof" json:"allow_multiple_eg,omitempty"`
+	DatabaseId          *string                                  `protobuf:"bytes,4,opt,name=database_id,json=databaseId,proto3,oneof" json:"database_id,omitempty"`
+	Mode                *BeginTransactionRequest_TransactionMode `protobuf:"varint,5,opt,name=mode,proto3,enum=appengine.BeginTransactionRequest_TransactionMode,oneof" json:"mode,omitempty"`
+	PreviousTransaction *Transaction                             `protobuf:"bytes,7,opt,name=previous_transaction,json=previousTransaction,proto3,oneof" json:"previous_transaction,omitempty"`
 }
-func (dst *GetResponse_Entity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetResponse_Entity.Merge(dst, src)
+
+func (x *BeginTransactionRequest) Reset() {
+	*x = BeginTransactionRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[36]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetResponse_Entity) XXX_Size() int {
-	return xxx_messageInfo_GetResponse_Entity.Size(m)
+
+func (x *BeginTransactionRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetResponse_Entity) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetResponse_Entity.DiscardUnknown(m)
+
+func (*BeginTransactionRequest) ProtoMessage() {}
+
+func (x *BeginTransactionRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_GetResponse_Entity proto.InternalMessageInfo
+// Deprecated: Use BeginTransactionRequest.ProtoReflect.Descriptor instead.
+func (*BeginTransactionRequest) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{36}
+}
 
-func (m *GetResponse_Entity) GetEntity() *EntityProto {
-	if m != nil {
-		return m.Entity
+func (x *BeginTransactionRequest) GetHeader() *InternalHeader {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-func (m *GetResponse_Entity) GetKey() *Reference {
-	if m != nil {
-		return m.Key
+func (x *BeginTransactionRequest) GetApp() string {
+	if x != nil {
+		return x.App
+	}
+	return ""
+}
+
+func (x *BeginTransactionRequest) GetAllowMultipleEg() bool {
+	if x != nil && x.AllowMultipleEg != nil {
+		return *x.AllowMultipleEg
+	}
+	return false
+}
+
+func (x *BeginTransactionRequest) GetDatabaseId() string {
+	if x != nil && x.DatabaseId != nil {
+		return *x.DatabaseId
+	}
+	return ""
+}
+
+func (x *BeginTransactionRequest) GetMode() BeginTransactionRequest_TransactionMode {
+	if x != nil && x.Mode != nil {
+		return *x.Mode
+	}
+	return BeginTransactionRequest_UNKNOWN
+}
+
+func (x *BeginTransactionRequest) GetPreviousTransaction() *Transaction {
+	if x != nil {
+		return x.PreviousTransaction
 	}
 	return nil
 }
 
-func (m *GetResponse_Entity) GetVersion() int64 {
-	if m != nil && m.Version != nil {
-		return *m.Version
+type CommitResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Cost    *Cost                         `protobuf:"bytes,1,opt,name=cost,proto3,oneof" json:"cost,omitempty"`
+	Version []*CommitResponse_VersionType `protobuf:"bytes,3,rep,name=Version,proto3" json:"Version,omitempty"`
+}
+
+func (x *CommitResponse) Reset() {
+	*x = CommitResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[37]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-type PutRequest struct {
-	Header               *InternalHeader          `protobuf:"bytes,11,opt,name=header" json:"header,omitempty"`
-	Entity               []*EntityProto           `protobuf:"bytes,1,rep,name=entity" json:"entity,omitempty"`
-	Transaction          *Transaction             `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"`
-	CompositeIndex       []*CompositeIndex        `protobuf:"bytes,3,rep,name=composite_index,json=compositeIndex" json:"composite_index,omitempty"`
-	Trusted              *bool                    `protobuf:"varint,4,opt,name=trusted,def=0" json:"trusted,omitempty"`
-	Force                *bool                    `protobuf:"varint,7,opt,name=force,def=0" json:"force,omitempty"`
-	MarkChanges          *bool                    `protobuf:"varint,8,opt,name=mark_changes,json=markChanges,def=0" json:"mark_changes,omitempty"`
-	Snapshot             []*Snapshot              `protobuf:"bytes,9,rep,name=snapshot" json:"snapshot,omitempty"`
-	AutoIdPolicy         *PutRequest_AutoIdPolicy `protobuf:"varint,10,opt,name=auto_id_policy,json=autoIdPolicy,enum=appengine.PutRequest_AutoIdPolicy,def=0" json:"auto_id_policy,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
-}
-
-func (m *PutRequest) Reset()         { *m = PutRequest{} }
-func (m *PutRequest) String() string { return proto.CompactTextString(m) }
-func (*PutRequest) ProtoMessage()    {}
-func (*PutRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{23}
+func (x *CommitResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CommitResponse) ProtoMessage() {}
+
+func (x *CommitResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 CommitResponse.ProtoReflect.Descriptor instead.
+func (*CommitResponse) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{37}
+}
+
+func (x *CommitResponse) GetCost() *Cost {
+	if x != nil {
+		return x.Cost
+	}
+	return nil
+}
+
+func (x *CommitResponse) GetVersion() []*CommitResponse_VersionType {
+	if x != nil {
+		return x.Version
+	}
+	return nil
+}
+
+type PropertyValue_PointValueType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	X float64 `protobuf:"fixed64,1,opt,name=x,proto3" json:"x,omitempty"`
+	Y float64 `protobuf:"fixed64,2,opt,name=y,proto3" json:"y,omitempty"`
 }
-func (m *PutRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PutRequest.Unmarshal(m, b)
+
+func (x *PropertyValue_PointValueType) Reset() {
+	*x = PropertyValue_PointValueType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[38]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PutRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PutRequest.Marshal(b, m, deterministic)
+
+func (x *PropertyValue_PointValueType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (dst *PutRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PutRequest.Merge(dst, src)
+
+func (*PropertyValue_PointValueType) ProtoMessage() {}
+
+func (x *PropertyValue_PointValueType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
-func (m *PutRequest) XXX_Size() int {
-	return xxx_messageInfo_PutRequest.Size(m)
+
+// Deprecated: Use PropertyValue_PointValueType.ProtoReflect.Descriptor instead.
+func (*PropertyValue_PointValueType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{1, 0}
 }
-func (m *PutRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_PutRequest.DiscardUnknown(m)
+
+func (x *PropertyValue_PointValueType) GetX() float64 {
+	if x != nil {
+		return x.X
+	}
+	return 0
+}
+
+func (x *PropertyValue_PointValueType) GetY() float64 {
+	if x != nil {
+		return x.Y
+	}
+	return 0
 }
 
-var xxx_messageInfo_PutRequest proto.InternalMessageInfo
+type PropertyValue_UserValueType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-const Default_PutRequest_Trusted bool = false
-const Default_PutRequest_Force bool = false
-const Default_PutRequest_MarkChanges bool = false
-const Default_PutRequest_AutoIdPolicy PutRequest_AutoIdPolicy = PutRequest_CURRENT
+	Email             string  `protobuf:"bytes,9,opt,name=email,proto3" json:"email,omitempty"`
+	AuthDomain        string  `protobuf:"bytes,10,opt,name=auth_domain,json=authDomain,proto3" json:"auth_domain,omitempty"`
+	Nickname          *string `protobuf:"bytes,11,opt,name=nickname,proto3,oneof" json:"nickname,omitempty"`
+	FederatedIdentity *string `protobuf:"bytes,21,opt,name=federated_identity,json=federatedIdentity,proto3,oneof" json:"federated_identity,omitempty"`
+	FederatedProvider *string `protobuf:"bytes,22,opt,name=federated_provider,json=federatedProvider,proto3,oneof" json:"federated_provider,omitempty"`
+}
 
-func (m *PutRequest) GetHeader() *InternalHeader {
-	if m != nil {
-		return m.Header
+func (x *PropertyValue_UserValueType) Reset() {
+	*x = PropertyValue_UserValueType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[39]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (m *PutRequest) GetEntity() []*EntityProto {
-	if m != nil {
-		return m.Entity
-	}
-	return nil
+func (x *PropertyValue_UserValueType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *PutRequest) GetTransaction() *Transaction {
-	if m != nil {
-		return m.Transaction
+func (*PropertyValue_UserValueType) ProtoMessage() {}
+
+func (x *PropertyValue_UserValueType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 nil
+	return mi.MessageOf(x)
 }
 
-func (m *PutRequest) GetCompositeIndex() []*CompositeIndex {
-	if m != nil {
-		return m.CompositeIndex
-	}
-	return nil
+// Deprecated: Use PropertyValue_UserValueType.ProtoReflect.Descriptor instead.
+func (*PropertyValue_UserValueType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{1, 1}
 }
 
-func (m *PutRequest) GetTrusted() bool {
-	if m != nil && m.Trusted != nil {
-		return *m.Trusted
+func (x *PropertyValue_UserValueType) GetEmail() string {
+	if x != nil {
+		return x.Email
 	}
-	return Default_PutRequest_Trusted
+	return ""
 }
 
-func (m *PutRequest) GetForce() bool {
-	if m != nil && m.Force != nil {
-		return *m.Force
+func (x *PropertyValue_UserValueType) GetAuthDomain() string {
+	if x != nil {
+		return x.AuthDomain
 	}
-	return Default_PutRequest_Force
+	return ""
 }
 
-func (m *PutRequest) GetMarkChanges() bool {
-	if m != nil && m.MarkChanges != nil {
-		return *m.MarkChanges
+func (x *PropertyValue_UserValueType) GetNickname() string {
+	if x != nil && x.Nickname != nil {
+		return *x.Nickname
 	}
-	return Default_PutRequest_MarkChanges
+	return ""
 }
 
-func (m *PutRequest) GetSnapshot() []*Snapshot {
-	if m != nil {
-		return m.Snapshot
+func (x *PropertyValue_UserValueType) GetFederatedIdentity() string {
+	if x != nil && x.FederatedIdentity != nil {
+		return *x.FederatedIdentity
 	}
-	return nil
+	return ""
 }
 
-func (m *PutRequest) GetAutoIdPolicy() PutRequest_AutoIdPolicy {
-	if m != nil && m.AutoIdPolicy != nil {
-		return *m.AutoIdPolicy
+func (x *PropertyValue_UserValueType) GetFederatedProvider() string {
+	if x != nil && x.FederatedProvider != nil {
+		return *x.FederatedProvider
 	}
-	return Default_PutRequest_AutoIdPolicy
+	return ""
 }
 
-type PutResponse struct {
-	Key                  []*Reference `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"`
-	Cost                 *Cost        `protobuf:"bytes,2,opt,name=cost" json:"cost,omitempty"`
-	Version              []int64      `protobuf:"varint,3,rep,name=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
+type PropertyValue_ReferenceValueType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *PutResponse) Reset()         { *m = PutResponse{} }
-func (m *PutResponse) String() string { return proto.CompactTextString(m) }
-func (*PutResponse) ProtoMessage()    {}
-func (*PutResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{24}
-}
-func (m *PutResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PutResponse.Unmarshal(m, b)
-}
-func (m *PutResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PutResponse.Marshal(b, m, deterministic)
+	App         string                                              `protobuf:"bytes,13,opt,name=app,proto3" json:"app,omitempty"`
+	NameSpace   *string                                             `protobuf:"bytes,20,opt,name=name_space,json=nameSpace,proto3,oneof" json:"name_space,omitempty"`
+	PathElement []*PropertyValue_ReferenceValueType_PathElementType `protobuf:"bytes,14,rep,name=PathElement,proto3" json:"PathElement,omitempty"`
 }
-func (dst *PutResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PutResponse.Merge(dst, src)
+
+func (x *PropertyValue_ReferenceValueType) Reset() {
+	*x = PropertyValue_ReferenceValueType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[40]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PutResponse) XXX_Size() int {
-	return xxx_messageInfo_PutResponse.Size(m)
+
+func (x *PropertyValue_ReferenceValueType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *PutResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_PutResponse.DiscardUnknown(m)
+
+func (*PropertyValue_ReferenceValueType) ProtoMessage() {}
+
+func (x *PropertyValue_ReferenceValueType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_PutResponse proto.InternalMessageInfo
+// Deprecated: Use PropertyValue_ReferenceValueType.ProtoReflect.Descriptor instead.
+func (*PropertyValue_ReferenceValueType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{1, 2}
+}
 
-func (m *PutResponse) GetKey() []*Reference {
-	if m != nil {
-		return m.Key
+func (x *PropertyValue_ReferenceValueType) GetApp() string {
+	if x != nil {
+		return x.App
 	}
-	return nil
+	return ""
 }
 
-func (m *PutResponse) GetCost() *Cost {
-	if m != nil {
-		return m.Cost
+func (x *PropertyValue_ReferenceValueType) GetNameSpace() string {
+	if x != nil && x.NameSpace != nil {
+		return *x.NameSpace
 	}
-	return nil
+	return ""
 }
 
-func (m *PutResponse) GetVersion() []int64 {
-	if m != nil {
-		return m.Version
+func (x *PropertyValue_ReferenceValueType) GetPathElement() []*PropertyValue_ReferenceValueType_PathElementType {
+	if x != nil {
+		return x.PathElement
 	}
 	return nil
 }
 
-type TouchRequest struct {
-	Header               *InternalHeader   `protobuf:"bytes,10,opt,name=header" json:"header,omitempty"`
-	Key                  []*Reference      `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"`
-	CompositeIndex       []*CompositeIndex `protobuf:"bytes,2,rep,name=composite_index,json=compositeIndex" json:"composite_index,omitempty"`
-	Force                *bool             `protobuf:"varint,3,opt,name=force,def=0" json:"force,omitempty"`
-	Snapshot             []*Snapshot       `protobuf:"bytes,9,rep,name=snapshot" json:"snapshot,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *TouchRequest) Reset()         { *m = TouchRequest{} }
-func (m *TouchRequest) String() string { return proto.CompactTextString(m) }
-func (*TouchRequest) ProtoMessage()    {}
-func (*TouchRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{25}
-}
-func (m *TouchRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TouchRequest.Unmarshal(m, b)
-}
-func (m *TouchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TouchRequest.Marshal(b, m, deterministic)
-}
-func (dst *TouchRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TouchRequest.Merge(dst, src)
-}
-func (m *TouchRequest) XXX_Size() int {
-	return xxx_messageInfo_TouchRequest.Size(m)
+type PropertyValue_ReferenceValueType_PathElementType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Type string  `protobuf:"bytes,15,opt,name=type,proto3" json:"type,omitempty"`
+	Id   *int64  `protobuf:"varint,16,opt,name=id,proto3,oneof" json:"id,omitempty"`
+	Name *string `protobuf:"bytes,17,opt,name=name,proto3,oneof" json:"name,omitempty"`
 }
-func (m *TouchRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TouchRequest.DiscardUnknown(m)
+
+func (x *PropertyValue_ReferenceValueType_PathElementType) Reset() {
+	*x = PropertyValue_ReferenceValueType_PathElementType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[41]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-var xxx_messageInfo_TouchRequest proto.InternalMessageInfo
+func (x *PropertyValue_ReferenceValueType_PathElementType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
 
-const Default_TouchRequest_Force bool = false
+func (*PropertyValue_ReferenceValueType_PathElementType) ProtoMessage() {}
 
-func (m *TouchRequest) GetHeader() *InternalHeader {
-	if m != nil {
-		return m.Header
+func (x *PropertyValue_ReferenceValueType_PathElementType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 nil
+	return mi.MessageOf(x)
 }
 
-func (m *TouchRequest) GetKey() []*Reference {
-	if m != nil {
-		return m.Key
-	}
-	return nil
+// Deprecated: Use PropertyValue_ReferenceValueType_PathElementType.ProtoReflect.Descriptor instead.
+func (*PropertyValue_ReferenceValueType_PathElementType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{1, 2, 0}
 }
 
-func (m *TouchRequest) GetCompositeIndex() []*CompositeIndex {
-	if m != nil {
-		return m.CompositeIndex
+func (x *PropertyValue_ReferenceValueType_PathElementType) GetType() string {
+	if x != nil {
+		return x.Type
 	}
-	return nil
+	return ""
 }
 
-func (m *TouchRequest) GetForce() bool {
-	if m != nil && m.Force != nil {
-		return *m.Force
+func (x *PropertyValue_ReferenceValueType_PathElementType) GetId() int64 {
+	if x != nil && x.Id != nil {
+		return *x.Id
 	}
-	return Default_TouchRequest_Force
+	return 0
 }
 
-func (m *TouchRequest) GetSnapshot() []*Snapshot {
-	if m != nil {
-		return m.Snapshot
+func (x *PropertyValue_ReferenceValueType_PathElementType) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
 	}
-	return nil
+	return ""
 }
 
-type TouchResponse struct {
-	Cost                 *Cost    `protobuf:"bytes,1,opt,name=cost" json:"cost,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type Path_ElementType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TouchResponse) Reset()         { *m = TouchResponse{} }
-func (m *TouchResponse) String() string { return proto.CompactTextString(m) }
-func (*TouchResponse) ProtoMessage()    {}
-func (*TouchResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{26}
+	Type string  `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+	Id   *int64  `protobuf:"varint,3,opt,name=id,proto3,oneof" json:"id,omitempty"`
+	Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"`
 }
-func (m *TouchResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TouchResponse.Unmarshal(m, b)
-}
-func (m *TouchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TouchResponse.Marshal(b, m, deterministic)
-}
-func (dst *TouchResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TouchResponse.Merge(dst, src)
-}
-func (m *TouchResponse) XXX_Size() int {
-	return xxx_messageInfo_TouchResponse.Size(m)
+
+func (x *Path_ElementType) Reset() {
+	*x = Path_ElementType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[42]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TouchResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TouchResponse.DiscardUnknown(m)
+
+func (x *Path_ElementType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TouchResponse proto.InternalMessageInfo
+func (*Path_ElementType) ProtoMessage() {}
 
-func (m *TouchResponse) GetCost() *Cost {
-	if m != nil {
-		return m.Cost
+func (x *Path_ElementType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 nil
+	return mi.MessageOf(x)
 }
 
-type DeleteRequest struct {
-	Header               *InternalHeader `protobuf:"bytes,10,opt,name=header" json:"header,omitempty"`
-	Key                  []*Reference    `protobuf:"bytes,6,rep,name=key" json:"key,omitempty"`
-	Transaction          *Transaction    `protobuf:"bytes,5,opt,name=transaction" json:"transaction,omitempty"`
-	Trusted              *bool           `protobuf:"varint,4,opt,name=trusted,def=0" json:"trusted,omitempty"`
-	Force                *bool           `protobuf:"varint,7,opt,name=force,def=0" json:"force,omitempty"`
-	MarkChanges          *bool           `protobuf:"varint,8,opt,name=mark_changes,json=markChanges,def=0" json:"mark_changes,omitempty"`
-	Snapshot             []*Snapshot     `protobuf:"bytes,9,rep,name=snapshot" json:"snapshot,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *DeleteRequest) Reset()         { *m = DeleteRequest{} }
-func (m *DeleteRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteRequest) ProtoMessage()    {}
-func (*DeleteRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{27}
-}
-func (m *DeleteRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteRequest.Unmarshal(m, b)
-}
-func (m *DeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteRequest.Marshal(b, m, deterministic)
-}
-func (dst *DeleteRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteRequest.Merge(dst, src)
+// Deprecated: Use Path_ElementType.ProtoReflect.Descriptor instead.
+func (*Path_ElementType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{3, 0}
 }
-func (m *DeleteRequest) XXX_Size() int {
-	return xxx_messageInfo_DeleteRequest.Size(m)
-}
-func (m *DeleteRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeleteRequest proto.InternalMessageInfo
-
-const Default_DeleteRequest_Trusted bool = false
-const Default_DeleteRequest_Force bool = false
-const Default_DeleteRequest_MarkChanges bool = false
 
-func (m *DeleteRequest) GetHeader() *InternalHeader {
-	if m != nil {
-		return m.Header
+func (x *Path_ElementType) GetType() string {
+	if x != nil {
+		return x.Type
 	}
-	return nil
+	return ""
 }
 
-func (m *DeleteRequest) GetKey() []*Reference {
-	if m != nil {
-		return m.Key
+func (x *Path_ElementType) GetId() int64 {
+	if x != nil && x.Id != nil {
+		return *x.Id
 	}
-	return nil
+	return 0
 }
 
-func (m *DeleteRequest) GetTransaction() *Transaction {
-	if m != nil {
-		return m.Transaction
+func (x *Path_ElementType) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
 	}
-	return nil
+	return ""
 }
 
-func (m *DeleteRequest) GetTrusted() bool {
-	if m != nil && m.Trusted != nil {
-		return *m.Trusted
-	}
-	return Default_DeleteRequest_Trusted
+type Index_PropertyType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name      string                        `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+	Direction *Index_PropertyType_Direction `protobuf:"varint,4,opt,name=direction,proto3,enum=appengine.Index_PropertyType_Direction,oneof" json:"direction,omitempty"`
 }
 
-func (m *DeleteRequest) GetForce() bool {
-	if m != nil && m.Force != nil {
-		return *m.Force
+func (x *Index_PropertyType) Reset() {
+	*x = Index_PropertyType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[43]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return Default_DeleteRequest_Force
 }
 
-func (m *DeleteRequest) GetMarkChanges() bool {
-	if m != nil && m.MarkChanges != nil {
-		return *m.MarkChanges
-	}
-	return Default_DeleteRequest_MarkChanges
+func (x *Index_PropertyType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *DeleteRequest) GetSnapshot() []*Snapshot {
-	if m != nil {
-		return m.Snapshot
+func (*Index_PropertyType) ProtoMessage() {}
+
+func (x *Index_PropertyType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 nil
+	return mi.MessageOf(x)
 }
 
-type DeleteResponse struct {
-	Cost                 *Cost    `protobuf:"bytes,1,opt,name=cost" json:"cost,omitempty"`
-	Version              []int64  `protobuf:"varint,3,rep,name=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+// Deprecated: Use Index_PropertyType.ProtoReflect.Descriptor instead.
+func (*Index_PropertyType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{8, 0}
 }
 
-func (m *DeleteResponse) Reset()         { *m = DeleteResponse{} }
-func (m *DeleteResponse) String() string { return proto.CompactTextString(m) }
-func (*DeleteResponse) ProtoMessage()    {}
-func (*DeleteResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{28}
+func (x *Index_PropertyType) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
 }
-func (m *DeleteResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteResponse.Unmarshal(m, b)
+
+func (x *Index_PropertyType) GetDirection() Index_PropertyType_Direction {
+	if x != nil && x.Direction != nil {
+		return *x.Direction
+	}
+	return Index_PropertyType_NONE
 }
-func (m *DeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteResponse.Marshal(b, m, deterministic)
+
+type IndexPostfix_IndexValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	PropertyName string         `protobuf:"bytes,1,opt,name=property_name,json=propertyName,proto3" json:"property_name,omitempty"`
+	Value        *PropertyValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (dst *DeleteResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteResponse.Merge(dst, src)
+
+func (x *IndexPostfix_IndexValue) Reset() {
+	*x = IndexPostfix_IndexValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[44]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DeleteResponse) XXX_Size() int {
-	return xxx_messageInfo_DeleteResponse.Size(m)
+
+func (x *IndexPostfix_IndexValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DeleteResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteResponse.DiscardUnknown(m)
+
+func (*IndexPostfix_IndexValue) ProtoMessage() {}
+
+func (x *IndexPostfix_IndexValue) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_DeleteResponse proto.InternalMessageInfo
+// Deprecated: Use IndexPostfix_IndexValue.ProtoReflect.Descriptor instead.
+func (*IndexPostfix_IndexValue) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{10, 0}
+}
 
-func (m *DeleteResponse) GetCost() *Cost {
-	if m != nil {
-		return m.Cost
+func (x *IndexPostfix_IndexValue) GetPropertyName() string {
+	if x != nil {
+		return x.PropertyName
 	}
-	return nil
+	return ""
 }
 
-func (m *DeleteResponse) GetVersion() []int64 {
-	if m != nil {
-		return m.Version
+func (x *IndexPostfix_IndexValue) GetValue() *PropertyValue {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
-type NextRequest struct {
-	Header               *InternalHeader `protobuf:"bytes,5,opt,name=header" json:"header,omitempty"`
-	Cursor               *Cursor         `protobuf:"bytes,1,req,name=cursor" json:"cursor,omitempty"`
-	Count                *int32          `protobuf:"varint,2,opt,name=count" json:"count,omitempty"`
-	Offset               *int32          `protobuf:"varint,4,opt,name=offset,def=0" json:"offset,omitempty"`
-	Compile              *bool           `protobuf:"varint,3,opt,name=compile,def=0" json:"compile,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *NextRequest) Reset()         { *m = NextRequest{} }
-func (m *NextRequest) String() string { return proto.CompactTextString(m) }
-func (*NextRequest) ProtoMessage()    {}
-func (*NextRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{29}
-}
-func (m *NextRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NextRequest.Unmarshal(m, b)
-}
-func (m *NextRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NextRequest.Marshal(b, m, deterministic)
-}
-func (dst *NextRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NextRequest.Merge(dst, src)
+type Query_FilterType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Op       Query_FilterType_Operator `protobuf:"varint,6,opt,name=op,proto3,enum=appengine.Query_FilterType_Operator" json:"op,omitempty"`
+	Property []*Property               `protobuf:"bytes,14,rep,name=property,proto3" json:"property,omitempty"`
 }
-func (m *NextRequest) XXX_Size() int {
-	return xxx_messageInfo_NextRequest.Size(m)
+
+func (x *Query_FilterType) Reset() {
+	*x = Query_FilterType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[45]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *NextRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_NextRequest.DiscardUnknown(m)
+
+func (x *Query_FilterType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_NextRequest proto.InternalMessageInfo
+func (*Query_FilterType) ProtoMessage() {}
+
+func (x *Query_FilterType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
+}
 
-const Default_NextRequest_Offset int32 = 0
-const Default_NextRequest_Compile bool = false
+// Deprecated: Use Query_FilterType.ProtoReflect.Descriptor instead.
+func (*Query_FilterType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{15, 0}
+}
 
-func (m *NextRequest) GetHeader() *InternalHeader {
-	if m != nil {
-		return m.Header
+func (x *Query_FilterType) GetOp() Query_FilterType_Operator {
+	if x != nil {
+		return x.Op
 	}
-	return nil
+	return Query_FilterType_NONE
 }
 
-func (m *NextRequest) GetCursor() *Cursor {
-	if m != nil {
-		return m.Cursor
+func (x *Query_FilterType) GetProperty() []*Property {
+	if x != nil {
+		return x.Property
 	}
 	return nil
 }
 
-func (m *NextRequest) GetCount() int32 {
-	if m != nil && m.Count != nil {
-		return *m.Count
-	}
-	return 0
+type Query_OrderType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Property  string                     `protobuf:"bytes,10,opt,name=property,proto3" json:"property,omitempty"`
+	Direction *Query_OrderType_Direction `protobuf:"varint,11,opt,name=direction,proto3,enum=appengine.Query_OrderType_Direction,oneof" json:"direction,omitempty"`
 }
 
-func (m *NextRequest) GetOffset() int32 {
-	if m != nil && m.Offset != nil {
-		return *m.Offset
+func (x *Query_OrderType) Reset() {
+	*x = Query_OrderType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[46]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return Default_NextRequest_Offset
 }
 
-func (m *NextRequest) GetCompile() bool {
-	if m != nil && m.Compile != nil {
-		return *m.Compile
+func (x *Query_OrderType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Query_OrderType) ProtoMessage() {}
+
+func (x *Query_OrderType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 Default_NextRequest_Compile
+	return mi.MessageOf(x)
 }
 
-type QueryResult struct {
-	Cursor               *Cursor           `protobuf:"bytes,1,opt,name=cursor" json:"cursor,omitempty"`
-	Result               []*EntityProto    `protobuf:"bytes,2,rep,name=result" json:"result,omitempty"`
-	SkippedResults       *int32            `protobuf:"varint,7,opt,name=skipped_results,json=skippedResults" json:"skipped_results,omitempty"`
-	MoreResults          *bool             `protobuf:"varint,3,req,name=more_results,json=moreResults" json:"more_results,omitempty"`
-	KeysOnly             *bool             `protobuf:"varint,4,opt,name=keys_only,json=keysOnly" json:"keys_only,omitempty"`
-	IndexOnly            *bool             `protobuf:"varint,9,opt,name=index_only,json=indexOnly" json:"index_only,omitempty"`
-	SmallOps             *bool             `protobuf:"varint,10,opt,name=small_ops,json=smallOps" json:"small_ops,omitempty"`
-	CompiledQuery        *CompiledQuery    `protobuf:"bytes,5,opt,name=compiled_query,json=compiledQuery" json:"compiled_query,omitempty"`
-	CompiledCursor       *CompiledCursor   `protobuf:"bytes,6,opt,name=compiled_cursor,json=compiledCursor" json:"compiled_cursor,omitempty"`
-	Index                []*CompositeIndex `protobuf:"bytes,8,rep,name=index" json:"index,omitempty"`
-	Version              []int64           `protobuf:"varint,11,rep,name=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *QueryResult) Reset()         { *m = QueryResult{} }
-func (m *QueryResult) String() string { return proto.CompactTextString(m) }
-func (*QueryResult) ProtoMessage()    {}
-func (*QueryResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{30}
+// Deprecated: Use Query_OrderType.ProtoReflect.Descriptor instead.
+func (*Query_OrderType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{15, 1}
 }
-func (m *QueryResult) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_QueryResult.Unmarshal(m, b)
+
+func (x *Query_OrderType) GetProperty() string {
+	if x != nil {
+		return x.Property
+	}
+	return ""
 }
-func (m *QueryResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_QueryResult.Marshal(b, m, deterministic)
+
+func (x *Query_OrderType) GetDirection() Query_OrderType_Direction {
+	if x != nil && x.Direction != nil {
+		return *x.Direction
+	}
+	return Query_OrderType_NONE
 }
-func (dst *QueryResult) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_QueryResult.Merge(dst, src)
+
+type CompiledQuery_PrimaryScanType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	IndexName                  *string  `protobuf:"bytes,2,opt,name=index_name,json=indexName,proto3,oneof" json:"index_name,omitempty"`
+	StartKey                   *string  `protobuf:"bytes,3,opt,name=start_key,json=startKey,proto3,oneof" json:"start_key,omitempty"`
+	StartInclusive             *bool    `protobuf:"varint,4,opt,name=start_inclusive,json=startInclusive,proto3,oneof" json:"start_inclusive,omitempty"`
+	EndKey                     *string  `protobuf:"bytes,5,opt,name=end_key,json=endKey,proto3,oneof" json:"end_key,omitempty"`
+	EndInclusive               *bool    `protobuf:"varint,6,opt,name=end_inclusive,json=endInclusive,proto3,oneof" json:"end_inclusive,omitempty"`
+	StartPostfixValue          []string `protobuf:"bytes,22,rep,name=start_postfix_value,json=startPostfixValue,proto3" json:"start_postfix_value,omitempty"`
+	EndPostfixValue            []string `protobuf:"bytes,23,rep,name=end_postfix_value,json=endPostfixValue,proto3" json:"end_postfix_value,omitempty"`
+	EndUnappliedLogTimestampUs *int64   `protobuf:"varint,19,opt,name=end_unapplied_log_timestamp_us,json=endUnappliedLogTimestampUs,proto3,oneof" json:"end_unapplied_log_timestamp_us,omitempty"`
 }
-func (m *QueryResult) XXX_Size() int {
-	return xxx_messageInfo_QueryResult.Size(m)
+
+func (x *CompiledQuery_PrimaryScanType) Reset() {
+	*x = CompiledQuery_PrimaryScanType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[47]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *QueryResult) XXX_DiscardUnknown() {
-	xxx_messageInfo_QueryResult.DiscardUnknown(m)
+
+func (x *CompiledQuery_PrimaryScanType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_QueryResult proto.InternalMessageInfo
+func (*CompiledQuery_PrimaryScanType) ProtoMessage() {}
 
-func (m *QueryResult) GetCursor() *Cursor {
-	if m != nil {
-		return m.Cursor
+func (x *CompiledQuery_PrimaryScanType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 nil
+	return mi.MessageOf(x)
 }
 
-func (m *QueryResult) GetResult() []*EntityProto {
-	if m != nil {
-		return m.Result
-	}
-	return nil
+// Deprecated: Use CompiledQuery_PrimaryScanType.ProtoReflect.Descriptor instead.
+func (*CompiledQuery_PrimaryScanType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{16, 0}
 }
 
-func (m *QueryResult) GetSkippedResults() int32 {
-	if m != nil && m.SkippedResults != nil {
-		return *m.SkippedResults
+func (x *CompiledQuery_PrimaryScanType) GetIndexName() string {
+	if x != nil && x.IndexName != nil {
+		return *x.IndexName
 	}
-	return 0
+	return ""
 }
 
-func (m *QueryResult) GetMoreResults() bool {
-	if m != nil && m.MoreResults != nil {
-		return *m.MoreResults
+func (x *CompiledQuery_PrimaryScanType) GetStartKey() string {
+	if x != nil && x.StartKey != nil {
+		return *x.StartKey
 	}
-	return false
+	return ""
 }
 
-func (m *QueryResult) GetKeysOnly() bool {
-	if m != nil && m.KeysOnly != nil {
-		return *m.KeysOnly
+func (x *CompiledQuery_PrimaryScanType) GetStartInclusive() bool {
+	if x != nil && x.StartInclusive != nil {
+		return *x.StartInclusive
 	}
 	return false
 }
 
-func (m *QueryResult) GetIndexOnly() bool {
-	if m != nil && m.IndexOnly != nil {
-		return *m.IndexOnly
+func (x *CompiledQuery_PrimaryScanType) GetEndKey() string {
+	if x != nil && x.EndKey != nil {
+		return *x.EndKey
 	}
-	return false
+	return ""
 }
 
-func (m *QueryResult) GetSmallOps() bool {
-	if m != nil && m.SmallOps != nil {
-		return *m.SmallOps
+func (x *CompiledQuery_PrimaryScanType) GetEndInclusive() bool {
+	if x != nil && x.EndInclusive != nil {
+		return *x.EndInclusive
 	}
 	return false
 }
 
-func (m *QueryResult) GetCompiledQuery() *CompiledQuery {
-	if m != nil {
-		return m.CompiledQuery
+func (x *CompiledQuery_PrimaryScanType) GetStartPostfixValue() []string {
+	if x != nil {
+		return x.StartPostfixValue
 	}
 	return nil
 }
 
-func (m *QueryResult) GetCompiledCursor() *CompiledCursor {
-	if m != nil {
-		return m.CompiledCursor
+func (x *CompiledQuery_PrimaryScanType) GetEndPostfixValue() []string {
+	if x != nil {
+		return x.EndPostfixValue
 	}
 	return nil
 }
 
-func (m *QueryResult) GetIndex() []*CompositeIndex {
-	if m != nil {
-		return m.Index
+func (x *CompiledQuery_PrimaryScanType) GetEndUnappliedLogTimestampUs() int64 {
+	if x != nil && x.EndUnappliedLogTimestampUs != nil {
+		return *x.EndUnappliedLogTimestampUs
 	}
-	return nil
+	return 0
 }
 
-func (m *QueryResult) GetVersion() []int64 {
-	if m != nil {
-		return m.Version
-	}
-	return nil
-}
+type CompiledQuery_MergeJoinScanType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-type AllocateIdsRequest struct {
-	Header               *InternalHeader `protobuf:"bytes,4,opt,name=header" json:"header,omitempty"`
-	ModelKey             *Reference      `protobuf:"bytes,1,opt,name=model_key,json=modelKey" json:"model_key,omitempty"`
-	Size                 *int64          `protobuf:"varint,2,opt,name=size" json:"size,omitempty"`
-	Max                  *int64          `protobuf:"varint,3,opt,name=max" json:"max,omitempty"`
-	Reserve              []*Reference    `protobuf:"bytes,5,rep,name=reserve" json:"reserve,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *AllocateIdsRequest) Reset()         { *m = AllocateIdsRequest{} }
-func (m *AllocateIdsRequest) String() string { return proto.CompactTextString(m) }
-func (*AllocateIdsRequest) ProtoMessage()    {}
-func (*AllocateIdsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{31}
-}
-func (m *AllocateIdsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AllocateIdsRequest.Unmarshal(m, b)
-}
-func (m *AllocateIdsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AllocateIdsRequest.Marshal(b, m, deterministic)
+	IndexName   string   `protobuf:"bytes,8,opt,name=index_name,json=indexName,proto3" json:"index_name,omitempty"`
+	PrefixValue []string `protobuf:"bytes,9,rep,name=prefix_value,json=prefixValue,proto3" json:"prefix_value,omitempty"`
+	ValuePrefix *bool    `protobuf:"varint,20,opt,name=value_prefix,json=valuePrefix,proto3,oneof" json:"value_prefix,omitempty"`
 }
-func (dst *AllocateIdsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AllocateIdsRequest.Merge(dst, src)
-}
-func (m *AllocateIdsRequest) XXX_Size() int {
-	return xxx_messageInfo_AllocateIdsRequest.Size(m)
+
+func (x *CompiledQuery_MergeJoinScanType) Reset() {
+	*x = CompiledQuery_MergeJoinScanType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[48]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AllocateIdsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_AllocateIdsRequest.DiscardUnknown(m)
+
+func (x *CompiledQuery_MergeJoinScanType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_AllocateIdsRequest proto.InternalMessageInfo
+func (*CompiledQuery_MergeJoinScanType) ProtoMessage() {}
 
-func (m *AllocateIdsRequest) GetHeader() *InternalHeader {
-	if m != nil {
-		return m.Header
+func (x *CompiledQuery_MergeJoinScanType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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 nil
+	return mi.MessageOf(x)
 }
 
-func (m *AllocateIdsRequest) GetModelKey() *Reference {
-	if m != nil {
-		return m.ModelKey
-	}
-	return nil
+// Deprecated: Use CompiledQuery_MergeJoinScanType.ProtoReflect.Descriptor instead.
+func (*CompiledQuery_MergeJoinScanType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{16, 1}
 }
 
-func (m *AllocateIdsRequest) GetSize() int64 {
-	if m != nil && m.Size != nil {
-		return *m.Size
+func (x *CompiledQuery_MergeJoinScanType) GetIndexName() string {
+	if x != nil {
+		return x.IndexName
 	}
-	return 0
+	return ""
 }
 
-func (m *AllocateIdsRequest) GetMax() int64 {
-	if m != nil && m.Max != nil {
-		return *m.Max
+func (x *CompiledQuery_MergeJoinScanType) GetPrefixValue() []string {
+	if x != nil {
+		return x.PrefixValue
 	}
-	return 0
+	return nil
 }
 
-func (m *AllocateIdsRequest) GetReserve() []*Reference {
-	if m != nil {
-		return m.Reserve
+func (x *CompiledQuery_MergeJoinScanType) GetValuePrefix() bool {
+	if x != nil && x.ValuePrefix != nil {
+		return *x.ValuePrefix
 	}
-	return nil
+	return false
 }
 
-type AllocateIdsResponse struct {
-	Start                *int64   `protobuf:"varint,1,req,name=start" json:"start,omitempty"`
-	End                  *int64   `protobuf:"varint,2,req,name=end" json:"end,omitempty"`
-	Cost                 *Cost    `protobuf:"bytes,3,opt,name=cost" json:"cost,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type CompiledQuery_EntityFilterType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *AllocateIdsResponse) Reset()         { *m = AllocateIdsResponse{} }
-func (m *AllocateIdsResponse) String() string { return proto.CompactTextString(m) }
-func (*AllocateIdsResponse) ProtoMessage()    {}
-func (*AllocateIdsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{32}
+	Distinct *bool      `protobuf:"varint,14,opt,name=distinct,proto3,oneof" json:"distinct,omitempty"`
+	Kind     *string    `protobuf:"bytes,17,opt,name=kind,proto3,oneof" json:"kind,omitempty"`
+	Ancestor *Reference `protobuf:"bytes,18,opt,name=ancestor,proto3,oneof" json:"ancestor,omitempty"`
 }
-func (m *AllocateIdsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AllocateIdsResponse.Unmarshal(m, b)
-}
-func (m *AllocateIdsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AllocateIdsResponse.Marshal(b, m, deterministic)
-}
-func (dst *AllocateIdsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AllocateIdsResponse.Merge(dst, src)
+
+func (x *CompiledQuery_EntityFilterType) Reset() {
+	*x = CompiledQuery_EntityFilterType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[49]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AllocateIdsResponse) XXX_Size() int {
-	return xxx_messageInfo_AllocateIdsResponse.Size(m)
+
+func (x *CompiledQuery_EntityFilterType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AllocateIdsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_AllocateIdsResponse.DiscardUnknown(m)
+
+func (*CompiledQuery_EntityFilterType) ProtoMessage() {}
+
+func (x *CompiledQuery_EntityFilterType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_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)
 }
 
-var xxx_messageInfo_AllocateIdsResponse proto.InternalMessageInfo
+// Deprecated: Use CompiledQuery_EntityFilterType.ProtoReflect.Descriptor instead.
+func (*CompiledQuery_EntityFilterType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{16, 2}
+}
 
-func (m *AllocateIdsResponse) GetStart() int64 {
-	if m != nil && m.Start != nil {
-		return *m.Start
+func (x *CompiledQuery_EntityFilterType) GetDistinct() bool {
+	if x != nil && x.Distinct != nil {
+		return *x.Distinct
 	}
-	return 0
+	return false
 }
 
-func (m *AllocateIdsResponse) GetEnd() int64 {
-	if m != nil && m.End != nil {
-		return *m.End
+func (x *CompiledQuery_EntityFilterType) GetKind() string {
+	if x != nil && x.Kind != nil {
+		return *x.Kind
 	}
-	return 0
+	return ""
 }
 
-func (m *AllocateIdsResponse) GetCost() *Cost {
-	if m != nil {
-		return m.Cost
+func (x *CompiledQuery_EntityFilterType) GetAncestor() *Reference {
+	if x != nil {
+		return x.Ancestor
 	}
 	return nil
 }
 
-type CompositeIndices struct {
-	Index                []*CompositeIndex `protobuf:"bytes,1,rep,name=index" json:"index,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
+type CompiledCursor_PositionType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CompositeIndices) Reset()         { *m = CompositeIndices{} }
-func (m *CompositeIndices) String() string { return proto.CompactTextString(m) }
-func (*CompositeIndices) ProtoMessage()    {}
-func (*CompositeIndices) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{33}
+	StartKey       *string                                       `protobuf:"bytes,27,opt,name=start_key,json=startKey,proto3,oneof" json:"start_key,omitempty"`
+	IndexValue     []*CompiledCursor_PositionType_IndexValueType `protobuf:"bytes,29,rep,name=IndexValue,proto3" json:"IndexValue,omitempty"`
+	Key            *Reference                                    `protobuf:"bytes,32,opt,name=key,proto3,oneof" json:"key,omitempty"`
+	StartInclusive *bool                                         `protobuf:"varint,28,opt,name=start_inclusive,json=startInclusive,proto3,oneof" json:"start_inclusive,omitempty"`
 }
-func (m *CompositeIndices) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompositeIndices.Unmarshal(m, b)
-}
-func (m *CompositeIndices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompositeIndices.Marshal(b, m, deterministic)
-}
-func (dst *CompositeIndices) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompositeIndices.Merge(dst, src)
-}
-func (m *CompositeIndices) XXX_Size() int {
-	return xxx_messageInfo_CompositeIndices.Size(m)
+
+func (x *CompiledCursor_PositionType) Reset() {
+	*x = CompiledCursor_PositionType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[50]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CompositeIndices) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompositeIndices.DiscardUnknown(m)
+
+func (x *CompiledCursor_PositionType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_CompositeIndices proto.InternalMessageInfo
+func (*CompiledCursor_PositionType) ProtoMessage() {}
 
-func (m *CompositeIndices) GetIndex() []*CompositeIndex {
-	if m != nil {
-		return m.Index
+func (x *CompiledCursor_PositionType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_proto_msgTypes[50]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-type AddActionsRequest struct {
-	Header               *InternalHeader `protobuf:"bytes,3,opt,name=header" json:"header,omitempty"`
-	Transaction          *Transaction    `protobuf:"bytes,1,req,name=transaction" json:"transaction,omitempty"`
-	Action               []*Action       `protobuf:"bytes,2,rep,name=action" json:"action,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+// Deprecated: Use CompiledCursor_PositionType.ProtoReflect.Descriptor instead.
+func (*CompiledCursor_PositionType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{17, 0}
 }
 
-func (m *AddActionsRequest) Reset()         { *m = AddActionsRequest{} }
-func (m *AddActionsRequest) String() string { return proto.CompactTextString(m) }
-func (*AddActionsRequest) ProtoMessage()    {}
-func (*AddActionsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{34}
-}
-func (m *AddActionsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AddActionsRequest.Unmarshal(m, b)
-}
-func (m *AddActionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AddActionsRequest.Marshal(b, m, deterministic)
-}
-func (dst *AddActionsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AddActionsRequest.Merge(dst, src)
-}
-func (m *AddActionsRequest) XXX_Size() int {
-	return xxx_messageInfo_AddActionsRequest.Size(m)
-}
-func (m *AddActionsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_AddActionsRequest.DiscardUnknown(m)
+func (x *CompiledCursor_PositionType) GetStartKey() string {
+	if x != nil && x.StartKey != nil {
+		return *x.StartKey
+	}
+	return ""
 }
 
-var xxx_messageInfo_AddActionsRequest proto.InternalMessageInfo
-
-func (m *AddActionsRequest) GetHeader() *InternalHeader {
-	if m != nil {
-		return m.Header
+func (x *CompiledCursor_PositionType) GetIndexValue() []*CompiledCursor_PositionType_IndexValueType {
+	if x != nil {
+		return x.IndexValue
 	}
 	return nil
 }
 
-func (m *AddActionsRequest) GetTransaction() *Transaction {
-	if m != nil {
-		return m.Transaction
+func (x *CompiledCursor_PositionType) GetKey() *Reference {
+	if x != nil {
+		return x.Key
 	}
 	return nil
 }
 
-func (m *AddActionsRequest) GetAction() []*Action {
-	if m != nil {
-		return m.Action
+func (x *CompiledCursor_PositionType) GetStartInclusive() bool {
+	if x != nil && x.StartInclusive != nil {
+		return *x.StartInclusive
 	}
-	return nil
+	return false
 }
 
-type AddActionsResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type CompiledCursor_PositionType_IndexValueType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *AddActionsResponse) Reset()         { *m = AddActionsResponse{} }
-func (m *AddActionsResponse) String() string { return proto.CompactTextString(m) }
-func (*AddActionsResponse) ProtoMessage()    {}
-func (*AddActionsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{35}
-}
-func (m *AddActionsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AddActionsResponse.Unmarshal(m, b)
-}
-func (m *AddActionsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AddActionsResponse.Marshal(b, m, deterministic)
+	Property *string        `protobuf:"bytes,30,opt,name=property,proto3,oneof" json:"property,omitempty"`
+	Value    *PropertyValue `protobuf:"bytes,31,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (dst *AddActionsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AddActionsResponse.Merge(dst, src)
-}
-func (m *AddActionsResponse) XXX_Size() int {
-	return xxx_messageInfo_AddActionsResponse.Size(m)
+
+func (x *CompiledCursor_PositionType_IndexValueType) Reset() {
+	*x = CompiledCursor_PositionType_IndexValueType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[51]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AddActionsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_AddActionsResponse.DiscardUnknown(m)
+
+func (x *CompiledCursor_PositionType_IndexValueType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_AddActionsResponse proto.InternalMessageInfo
+func (*CompiledCursor_PositionType_IndexValueType) ProtoMessage() {}
 
-type BeginTransactionRequest struct {
-	Header               *InternalHeader                          `protobuf:"bytes,3,opt,name=header" json:"header,omitempty"`
-	App                  *string                                  `protobuf:"bytes,1,req,name=app" json:"app,omitempty"`
-	AllowMultipleEg      *bool                                    `protobuf:"varint,2,opt,name=allow_multiple_eg,json=allowMultipleEg,def=0" json:"allow_multiple_eg,omitempty"`
-	DatabaseId           *string                                  `protobuf:"bytes,4,opt,name=database_id,json=databaseId" json:"database_id,omitempty"`
-	Mode                 *BeginTransactionRequest_TransactionMode `protobuf:"varint,5,opt,name=mode,enum=appengine.BeginTransactionRequest_TransactionMode,def=0" json:"mode,omitempty"`
-	PreviousTransaction  *Transaction                             `protobuf:"bytes,7,opt,name=previous_transaction,json=previousTransaction" json:"previous_transaction,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                 `json:"-"`
-	XXX_unrecognized     []byte                                   `json:"-"`
-	XXX_sizecache        int32                                    `json:"-"`
-}
-
-func (m *BeginTransactionRequest) Reset()         { *m = BeginTransactionRequest{} }
-func (m *BeginTransactionRequest) String() string { return proto.CompactTextString(m) }
-func (*BeginTransactionRequest) ProtoMessage()    {}
-func (*BeginTransactionRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{36}
-}
-func (m *BeginTransactionRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BeginTransactionRequest.Unmarshal(m, b)
-}
-func (m *BeginTransactionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BeginTransactionRequest.Marshal(b, m, deterministic)
+func (x *CompiledCursor_PositionType_IndexValueType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_proto_msgTypes[51]
+	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)
 }
-func (dst *BeginTransactionRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BeginTransactionRequest.Merge(dst, src)
+
+// Deprecated: Use CompiledCursor_PositionType_IndexValueType.ProtoReflect.Descriptor instead.
+func (*CompiledCursor_PositionType_IndexValueType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{17, 0, 0}
 }
-func (m *BeginTransactionRequest) XXX_Size() int {
-	return xxx_messageInfo_BeginTransactionRequest.Size(m)
+
+func (x *CompiledCursor_PositionType_IndexValueType) GetProperty() string {
+	if x != nil && x.Property != nil {
+		return *x.Property
+	}
+	return ""
 }
-func (m *BeginTransactionRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_BeginTransactionRequest.DiscardUnknown(m)
+
+func (x *CompiledCursor_PositionType_IndexValueType) GetValue() *PropertyValue {
+	if x != nil {
+		return x.Value
+	}
+	return nil
 }
 
-var xxx_messageInfo_BeginTransactionRequest proto.InternalMessageInfo
+type Cost_CommitCostType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-const Default_BeginTransactionRequest_AllowMultipleEg bool = false
-const Default_BeginTransactionRequest_Mode BeginTransactionRequest_TransactionMode = BeginTransactionRequest_UNKNOWN
+	RequestedEntityPuts    *int32 `protobuf:"varint,6,opt,name=requested_entity_puts,json=requestedEntityPuts,proto3,oneof" json:"requested_entity_puts,omitempty"`
+	RequestedEntityDeletes *int32 `protobuf:"varint,7,opt,name=requested_entity_deletes,json=requestedEntityDeletes,proto3,oneof" json:"requested_entity_deletes,omitempty"`
+}
 
-func (m *BeginTransactionRequest) GetHeader() *InternalHeader {
-	if m != nil {
-		return m.Header
+func (x *Cost_CommitCostType) Reset() {
+	*x = Cost_CommitCostType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[52]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (m *BeginTransactionRequest) GetApp() string {
-	if m != nil && m.App != nil {
-		return *m.App
-	}
-	return ""
+func (x *Cost_CommitCostType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *BeginTransactionRequest) GetAllowMultipleEg() bool {
-	if m != nil && m.AllowMultipleEg != nil {
-		return *m.AllowMultipleEg
+func (*Cost_CommitCostType) ProtoMessage() {}
+
+func (x *Cost_CommitCostType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_proto_msgTypes[52]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return Default_BeginTransactionRequest_AllowMultipleEg
+	return mi.MessageOf(x)
 }
 
-func (m *BeginTransactionRequest) GetDatabaseId() string {
-	if m != nil && m.DatabaseId != nil {
-		return *m.DatabaseId
-	}
-	return ""
+// Deprecated: Use Cost_CommitCostType.ProtoReflect.Descriptor instead.
+func (*Cost_CommitCostType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{20, 0}
 }
 
-func (m *BeginTransactionRequest) GetMode() BeginTransactionRequest_TransactionMode {
-	if m != nil && m.Mode != nil {
-		return *m.Mode
+func (x *Cost_CommitCostType) GetRequestedEntityPuts() int32 {
+	if x != nil && x.RequestedEntityPuts != nil {
+		return *x.RequestedEntityPuts
 	}
-	return Default_BeginTransactionRequest_Mode
+	return 0
 }
 
-func (m *BeginTransactionRequest) GetPreviousTransaction() *Transaction {
-	if m != nil {
-		return m.PreviousTransaction
+func (x *Cost_CommitCostType) GetRequestedEntityDeletes() int32 {
+	if x != nil && x.RequestedEntityDeletes != nil {
+		return *x.RequestedEntityDeletes
 	}
-	return nil
+	return 0
 }
 
-type CommitResponse struct {
-	Cost                 *Cost                     `protobuf:"bytes,1,opt,name=cost" json:"cost,omitempty"`
-	Version              []*CommitResponse_Version `protobuf:"group,3,rep,name=Version,json=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
-}
+type GetResponse_EntityType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CommitResponse) Reset()         { *m = CommitResponse{} }
-func (m *CommitResponse) String() string { return proto.CompactTextString(m) }
-func (*CommitResponse) ProtoMessage()    {}
-func (*CommitResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{37}
-}
-func (m *CommitResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CommitResponse.Unmarshal(m, b)
+	Entity  *EntityProto `protobuf:"bytes,2,opt,name=entity,proto3,oneof" json:"entity,omitempty"`
+	Key     *Reference   `protobuf:"bytes,4,opt,name=key,proto3,oneof" json:"key,omitempty"`
+	Version *int64       `protobuf:"varint,3,opt,name=version,proto3,oneof" json:"version,omitempty"`
 }
-func (m *CommitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CommitResponse.Marshal(b, m, deterministic)
-}
-func (dst *CommitResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommitResponse.Merge(dst, src)
+
+func (x *GetResponse_EntityType) Reset() {
+	*x = GetResponse_EntityType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[53]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CommitResponse) XXX_Size() int {
-	return xxx_messageInfo_CommitResponse.Size(m)
+
+func (x *GetResponse_EntityType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CommitResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CommitResponse.DiscardUnknown(m)
+
+func (*GetResponse_EntityType) ProtoMessage() {}
+
+func (x *GetResponse_EntityType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_proto_msgTypes[53]
+	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)
 }
 
-var xxx_messageInfo_CommitResponse proto.InternalMessageInfo
+// Deprecated: Use GetResponse_EntityType.ProtoReflect.Descriptor instead.
+func (*GetResponse_EntityType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{22, 0}
+}
 
-func (m *CommitResponse) GetCost() *Cost {
-	if m != nil {
-		return m.Cost
+func (x *GetResponse_EntityType) GetEntity() *EntityProto {
+	if x != nil {
+		return x.Entity
 	}
 	return nil
 }
 
-func (m *CommitResponse) GetVersion() []*CommitResponse_Version {
-	if m != nil {
-		return m.Version
+func (x *GetResponse_EntityType) GetKey() *Reference {
+	if x != nil {
+		return x.Key
 	}
 	return nil
 }
 
-type CommitResponse_Version struct {
-	RootEntityKey        *Reference `protobuf:"bytes,4,req,name=root_entity_key,json=rootEntityKey" json:"root_entity_key,omitempty"`
-	Version              *int64     `protobuf:"varint,5,req,name=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+func (x *GetResponse_EntityType) GetVersion() int64 {
+	if x != nil && x.Version != nil {
+		return *x.Version
+	}
+	return 0
 }
 
-func (m *CommitResponse_Version) Reset()         { *m = CommitResponse_Version{} }
-func (m *CommitResponse_Version) String() string { return proto.CompactTextString(m) }
-func (*CommitResponse_Version) ProtoMessage()    {}
-func (*CommitResponse_Version) Descriptor() ([]byte, []int) {
-	return fileDescriptor_datastore_v3_83b17b80c34f6179, []int{37, 0}
-}
-func (m *CommitResponse_Version) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CommitResponse_Version.Unmarshal(m, b)
-}
-func (m *CommitResponse_Version) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CommitResponse_Version.Marshal(b, m, deterministic)
+type CommitResponse_VersionType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	RootEntityKey *Reference `protobuf:"bytes,4,opt,name=root_entity_key,json=rootEntityKey,proto3" json:"root_entity_key,omitempty"`
+	Version       int64      `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
 }
-func (dst *CommitResponse_Version) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommitResponse_Version.Merge(dst, src)
+
+func (x *CommitResponse_VersionType) Reset() {
+	*x = CommitResponse_VersionType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_datastore_v3_proto_msgTypes[54]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CommitResponse_Version) XXX_Size() int {
-	return xxx_messageInfo_CommitResponse_Version.Size(m)
+
+func (x *CommitResponse_VersionType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CommitResponse_Version) XXX_DiscardUnknown() {
-	xxx_messageInfo_CommitResponse_Version.DiscardUnknown(m)
+
+func (*CommitResponse_VersionType) ProtoMessage() {}
+
+func (x *CommitResponse_VersionType) ProtoReflect() protoreflect.Message {
+	mi := &file_datastore_v3_proto_msgTypes[54]
+	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)
 }
 
-var xxx_messageInfo_CommitResponse_Version proto.InternalMessageInfo
+// Deprecated: Use CommitResponse_VersionType.ProtoReflect.Descriptor instead.
+func (*CommitResponse_VersionType) Descriptor() ([]byte, []int) {
+	return file_datastore_v3_proto_rawDescGZIP(), []int{37, 0}
+}
 
-func (m *CommitResponse_Version) GetRootEntityKey() *Reference {
-	if m != nil {
-		return m.RootEntityKey
+func (x *CommitResponse_VersionType) GetRootEntityKey() *Reference {
+	if x != nil {
+		return x.RootEntityKey
 	}
 	return nil
 }
 
-func (m *CommitResponse_Version) GetVersion() int64 {
-	if m != nil && m.Version != nil {
-		return *m.Version
+func (x *CommitResponse_VersionType) GetVersion() int64 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*Action)(nil), "appengine.Action")
-	proto.RegisterType((*PropertyValue)(nil), "appengine.PropertyValue")
-	proto.RegisterType((*PropertyValue_PointValue)(nil), "appengine.PropertyValue.PointValue")
-	proto.RegisterType((*PropertyValue_UserValue)(nil), "appengine.PropertyValue.UserValue")
-	proto.RegisterType((*PropertyValue_ReferenceValue)(nil), "appengine.PropertyValue.ReferenceValue")
-	proto.RegisterType((*PropertyValue_ReferenceValue_PathElement)(nil), "appengine.PropertyValue.ReferenceValue.PathElement")
-	proto.RegisterType((*Property)(nil), "appengine.Property")
-	proto.RegisterType((*Path)(nil), "appengine.Path")
-	proto.RegisterType((*Path_Element)(nil), "appengine.Path.Element")
-	proto.RegisterType((*Reference)(nil), "appengine.Reference")
-	proto.RegisterType((*User)(nil), "appengine.User")
-	proto.RegisterType((*EntityProto)(nil), "appengine.EntityProto")
-	proto.RegisterType((*CompositeProperty)(nil), "appengine.CompositeProperty")
-	proto.RegisterType((*Index)(nil), "appengine.Index")
-	proto.RegisterType((*Index_Property)(nil), "appengine.Index.Property")
-	proto.RegisterType((*CompositeIndex)(nil), "appengine.CompositeIndex")
-	proto.RegisterType((*IndexPostfix)(nil), "appengine.IndexPostfix")
-	proto.RegisterType((*IndexPostfix_IndexValue)(nil), "appengine.IndexPostfix.IndexValue")
-	proto.RegisterType((*IndexPosition)(nil), "appengine.IndexPosition")
-	proto.RegisterType((*Snapshot)(nil), "appengine.Snapshot")
-	proto.RegisterType((*InternalHeader)(nil), "appengine.InternalHeader")
-	proto.RegisterType((*Transaction)(nil), "appengine.Transaction")
-	proto.RegisterType((*Query)(nil), "appengine.Query")
-	proto.RegisterType((*Query_Filter)(nil), "appengine.Query.Filter")
-	proto.RegisterType((*Query_Order)(nil), "appengine.Query.Order")
-	proto.RegisterType((*CompiledQuery)(nil), "appengine.CompiledQuery")
-	proto.RegisterType((*CompiledQuery_PrimaryScan)(nil), "appengine.CompiledQuery.PrimaryScan")
-	proto.RegisterType((*CompiledQuery_MergeJoinScan)(nil), "appengine.CompiledQuery.MergeJoinScan")
-	proto.RegisterType((*CompiledQuery_EntityFilter)(nil), "appengine.CompiledQuery.EntityFilter")
-	proto.RegisterType((*CompiledCursor)(nil), "appengine.CompiledCursor")
-	proto.RegisterType((*CompiledCursor_Position)(nil), "appengine.CompiledCursor.Position")
-	proto.RegisterType((*CompiledCursor_Position_IndexValue)(nil), "appengine.CompiledCursor.Position.IndexValue")
-	proto.RegisterType((*Cursor)(nil), "appengine.Cursor")
-	proto.RegisterType((*Error)(nil), "appengine.Error")
-	proto.RegisterType((*Cost)(nil), "appengine.Cost")
-	proto.RegisterType((*Cost_CommitCost)(nil), "appengine.Cost.CommitCost")
-	proto.RegisterType((*GetRequest)(nil), "appengine.GetRequest")
-	proto.RegisterType((*GetResponse)(nil), "appengine.GetResponse")
-	proto.RegisterType((*GetResponse_Entity)(nil), "appengine.GetResponse.Entity")
-	proto.RegisterType((*PutRequest)(nil), "appengine.PutRequest")
-	proto.RegisterType((*PutResponse)(nil), "appengine.PutResponse")
-	proto.RegisterType((*TouchRequest)(nil), "appengine.TouchRequest")
-	proto.RegisterType((*TouchResponse)(nil), "appengine.TouchResponse")
-	proto.RegisterType((*DeleteRequest)(nil), "appengine.DeleteRequest")
-	proto.RegisterType((*DeleteResponse)(nil), "appengine.DeleteResponse")
-	proto.RegisterType((*NextRequest)(nil), "appengine.NextRequest")
-	proto.RegisterType((*QueryResult)(nil), "appengine.QueryResult")
-	proto.RegisterType((*AllocateIdsRequest)(nil), "appengine.AllocateIdsRequest")
-	proto.RegisterType((*AllocateIdsResponse)(nil), "appengine.AllocateIdsResponse")
-	proto.RegisterType((*CompositeIndices)(nil), "appengine.CompositeIndices")
-	proto.RegisterType((*AddActionsRequest)(nil), "appengine.AddActionsRequest")
-	proto.RegisterType((*AddActionsResponse)(nil), "appengine.AddActionsResponse")
-	proto.RegisterType((*BeginTransactionRequest)(nil), "appengine.BeginTransactionRequest")
-	proto.RegisterType((*CommitResponse)(nil), "appengine.CommitResponse")
-	proto.RegisterType((*CommitResponse_Version)(nil), "appengine.CommitResponse.Version")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/datastore/datastore_v3.proto", fileDescriptor_datastore_v3_83b17b80c34f6179)
-}
-
-var fileDescriptor_datastore_v3_83b17b80c34f6179 = []byte{
-	// 4156 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x73, 0xe3, 0x46,
-	0x76, 0x37, 0xc1, 0xef, 0x47, 0x89, 0x82, 0x5a, 0xf3, 0xc1, 0xa1, 0x3f, 0x46, 0xc6, 0xac, 0x6d,
-	0xd9, 0x6b, 0x73, 0x6c, 0xf9, 0x23, 0x5b, 0x4a, 0x76, 0x1d, 0x4a, 0xc4, 0x68, 0x90, 0xa1, 0x48,
-	0xb9, 0x09, 0xd9, 0x9e, 0x5c, 0x50, 0x18, 0xa2, 0x29, 0x21, 0x43, 0x02, 0x30, 0x00, 0x6a, 0x46,
-	0x93, 0xe4, 0x90, 0x4b, 0x2a, 0x55, 0x5b, 0xa9, 0x1c, 0x92, 0x4a, 0x25, 0xf9, 0x07, 0x72, 0xc8,
-	0x39, 0x95, 0xaa, 0x54, 0xf6, 0x98, 0x5b, 0x0e, 0x7b, 0xc9, 0x31, 0x95, 0x73, 0xf2, 0x27, 0x24,
-	0x39, 0xa4, 0xfa, 0x75, 0x03, 0x02, 0x28, 0x4a, 0x23, 0x6d, 0xf6, 0x90, 0x13, 0xd1, 0xef, 0xfd,
-	0xba, 0xf1, 0xfa, 0xf5, 0xfb, 0x6c, 0x10, 0xba, 0xc7, 0xbe, 0x7f, 0x3c, 0x65, 0x9d, 0x63, 0x7f,
-	0x6a, 0x7b, 0xc7, 0x1d, 0x3f, 0x3c, 0x7e, 0x68, 0x07, 0x01, 0xf3, 0x8e, 0x5d, 0x8f, 0x3d, 0x74,
-	0xbd, 0x98, 0x85, 0x9e, 0x3d, 0x7d, 0xe8, 0xd8, 0xb1, 0x1d, 0xc5, 0x7e, 0xc8, 0xce, 0x9f, 0xac,
-	0xd3, 0xcf, 0x3b, 0x41, 0xe8, 0xc7, 0x3e, 0xa9, 0xa7, 0x13, 0xb4, 0x1a, 0x54, 0xba, 0xe3, 0xd8,
-	0xf5, 0x3d, 0xed, 0x1f, 0x2b, 0xb0, 0x7a, 0x18, 0xfa, 0x01, 0x0b, 0xe3, 0xb3, 0x6f, 0xed, 0xe9,
-	0x9c, 0x91, 0x77, 0x00, 0x5c, 0x2f, 0xfe, 0xea, 0x0b, 0x1c, 0xb5, 0x0a, 0x9b, 0x85, 0xad, 0x22,
-	0xcd, 0x50, 0x88, 0x06, 0x2b, 0xcf, 0x7c, 0x7f, 0xca, 0x6c, 0x4f, 0x20, 0x94, 0xcd, 0xc2, 0x56,
-	0x8d, 0xe6, 0x68, 0x64, 0x13, 0x1a, 0x51, 0x1c, 0xba, 0xde, 0xb1, 0x80, 0x14, 0x37, 0x0b, 0x5b,
-	0x75, 0x9a, 0x25, 0x71, 0x84, 0xe3, 0xcf, 0x9f, 0x4d, 0x99, 0x40, 0x94, 0x36, 0x0b, 0x5b, 0x05,
-	0x9a, 0x25, 0x91, 0x3d, 0x80, 0xc0, 0x77, 0xbd, 0xf8, 0x14, 0x01, 0xe5, 0xcd, 0xc2, 0x16, 0x6c,
-	0x3f, 0xe8, 0xa4, 0x7b, 0xe8, 0xe4, 0xa4, 0xee, 0x1c, 0x72, 0x28, 0x3e, 0xd2, 0xcc, 0x34, 0xf2,
-	0xdb, 0x50, 0x9f, 0x47, 0x2c, 0x14, 0x6b, 0xd4, 0x70, 0x0d, 0xed, 0xd2, 0x35, 0x8e, 0x22, 0x16,
-	0x8a, 0x25, 0xce, 0x27, 0x91, 0x21, 0x34, 0x43, 0x36, 0x61, 0x21, 0xf3, 0xc6, 0x4c, 0x2c, 0xb3,
-	0x82, 0xcb, 0x7c, 0x70, 0xe9, 0x32, 0x34, 0x81, 0x8b, 0xb5, 0x16, 0xa6, 0xb7, 0xb7, 0x00, 0xce,
-	0x85, 0x25, 0x2b, 0x50, 0x78, 0xd9, 0xaa, 0x6c, 0x2a, 0x5b, 0x05, 0x5a, 0x78, 0xc9, 0x47, 0x67,
-	0xad, 0xaa, 0x18, 0x9d, 0xb5, 0xff, 0xa9, 0x00, 0xf5, 0x54, 0x26, 0x72, 0x0b, 0xca, 0x6c, 0x66,
-	0xbb, 0xd3, 0x56, 0x7d, 0x53, 0xd9, 0xaa, 0x53, 0x31, 0x20, 0xf7, 0xa1, 0x61, 0xcf, 0xe3, 0x13,
-	0xcb, 0xf1, 0x67, 0xb6, 0xeb, 0xb5, 0x00, 0x79, 0xc0, 0x49, 0x3d, 0xa4, 0x90, 0x36, 0xd4, 0x3c,
-	0x77, 0xfc, 0xdc, 0xb3, 0x67, 0xac, 0xd5, 0xc0, 0x73, 0x48, 0xc7, 0xe4, 0x13, 0x20, 0x13, 0xe6,
-	0xb0, 0xd0, 0x8e, 0x99, 0x63, 0xb9, 0x0e, 0xf3, 0x62, 0x37, 0x3e, 0x6b, 0xdd, 0x46, 0xd4, 0x7a,
-	0xca, 0x31, 0x24, 0x23, 0x0f, 0x0f, 0x42, 0xff, 0xd4, 0x75, 0x58, 0xd8, 0xba, 0xb3, 0x00, 0x3f,
-	0x94, 0x8c, 0xf6, 0xbf, 0x17, 0xa0, 0x99, 0xd7, 0x05, 0x51, 0xa1, 0x68, 0x07, 0x41, 0x6b, 0x15,
-	0xa5, 0xe4, 0x8f, 0xe4, 0x6d, 0x00, 0x2e, 0x8a, 0x15, 0x05, 0xf6, 0x98, 0xb5, 0x6e, 0xe1, 0x5a,
-	0x75, 0x4e, 0x19, 0x71, 0x02, 0x39, 0x82, 0x46, 0x60, 0xc7, 0x27, 0x6c, 0xca, 0x66, 0xcc, 0x8b,
-	0x5b, 0xcd, 0xcd, 0xe2, 0x16, 0x6c, 0x7f, 0x7e, 0x4d, 0xd5, 0x77, 0x0e, 0xed, 0xf8, 0x44, 0x17,
-	0x53, 0x69, 0x76, 0x9d, 0xb6, 0x0e, 0x8d, 0x0c, 0x8f, 0x10, 0x28, 0xc5, 0x67, 0x01, 0x6b, 0xad,
-	0xa1, 0x5c, 0xf8, 0x4c, 0x9a, 0xa0, 0xb8, 0x4e, 0x4b, 0x45, 0xf3, 0x57, 0x5c, 0x87, 0x63, 0x50,
-	0x87, 0xeb, 0x28, 0x22, 0x3e, 0x6b, 0xff, 0x51, 0x86, 0x5a, 0x22, 0x00, 0xe9, 0x42, 0x75, 0xc6,
-	0x6c, 0xcf, 0xf5, 0x8e, 0xd1, 0x69, 0x9a, 0xdb, 0x6f, 0x2e, 0x11, 0xb3, 0x73, 0x20, 0x20, 0x3b,
-	0x30, 0x18, 0x5a, 0x07, 0x7a, 0x77, 0x60, 0x0c, 0xf6, 0x69, 0x32, 0x8f, 0x1f, 0xa6, 0x7c, 0xb4,
-	0xe6, 0xa1, 0x8b, 0x9e, 0x55, 0xa7, 0x20, 0x49, 0x47, 0xa1, 0x9b, 0x0a, 0x51, 0x14, 0x82, 0xe2,
-	0x21, 0x76, 0xa0, 0x9c, 0xb8, 0x88, 0xb2, 0xd5, 0xd8, 0x6e, 0x5d, 0xa6, 0x1c, 0x2a, 0x60, 0xdc,
-	0x20, 0x66, 0xf3, 0x69, 0xec, 0x06, 0x53, 0xee, 0x76, 0xca, 0x56, 0x8d, 0xa6, 0x63, 0xf2, 0x1e,
-	0x40, 0xc4, 0xec, 0x70, 0x7c, 0x62, 0x3f, 0x9b, 0xb2, 0x56, 0x85, 0x7b, 0xf6, 0x4e, 0x79, 0x62,
-	0x4f, 0x23, 0x46, 0x33, 0x0c, 0x62, 0xc3, 0xdd, 0x49, 0x1c, 0x59, 0xb1, 0xff, 0x9c, 0x79, 0xee,
-	0x2b, 0x9b, 0x07, 0x12, 0xcb, 0x0f, 0xf8, 0x0f, 0xfa, 0x58, 0x73, 0xfb, 0xc3, 0x65, 0x5b, 0x7f,
-	0x14, 0x47, 0x66, 0x66, 0xc6, 0x10, 0x27, 0xd0, 0xdb, 0x93, 0x65, 0x64, 0xd2, 0x86, 0xca, 0xd4,
-	0x1f, 0xdb, 0x53, 0xd6, 0xaa, 0x73, 0x2d, 0xec, 0x28, 0xcc, 0xa3, 0x92, 0xa2, 0xfd, 0xb3, 0x02,
-	0x55, 0xa9, 0x47, 0xd2, 0x84, 0x8c, 0x26, 0xd5, 0x37, 0x48, 0x0d, 0x4a, 0xbb, 0xfd, 0xe1, 0xae,
-	0xda, 0xe4, 0x4f, 0xa6, 0xfe, 0xbd, 0xa9, 0xae, 0x71, 0xcc, 0xee, 0x53, 0x53, 0x1f, 0x99, 0x94,
-	0x63, 0x54, 0xb2, 0x0e, 0xab, 0x5d, 0x73, 0x78, 0x60, 0xed, 0x75, 0x4d, 0x7d, 0x7f, 0x48, 0x9f,
-	0xaa, 0x05, 0xb2, 0x0a, 0x75, 0x24, 0xf5, 0x8d, 0xc1, 0x13, 0x55, 0xe1, 0x33, 0x70, 0x68, 0x1a,
-	0x66, 0x5f, 0x57, 0x8b, 0x44, 0x85, 0x15, 0x31, 0x63, 0x38, 0x30, 0xf5, 0x81, 0xa9, 0x96, 0x52,
-	0xca, 0xe8, 0xe8, 0xe0, 0xa0, 0x4b, 0x9f, 0xaa, 0x65, 0xb2, 0x06, 0x0d, 0xa4, 0x74, 0x8f, 0xcc,
-	0xc7, 0x43, 0xaa, 0x56, 0x48, 0x03, 0xaa, 0xfb, 0x3d, 0xeb, 0xbb, 0xc7, 0xfa, 0x40, 0xad, 0x92,
-	0x15, 0xa8, 0xed, 0xf7, 0x2c, 0xfd, 0xa0, 0x6b, 0xf4, 0xd5, 0x1a, 0x9f, 0xbd, 0xaf, 0x0f, 0xe9,
-	0x68, 0x64, 0x1d, 0x0e, 0x8d, 0x81, 0xa9, 0xd6, 0x49, 0x1d, 0xca, 0xfb, 0x3d, 0xcb, 0x38, 0x50,
-	0x81, 0x10, 0x68, 0xee, 0xf7, 0xac, 0xc3, 0xc7, 0xc3, 0x81, 0x3e, 0x38, 0x3a, 0xd8, 0xd5, 0xa9,
-	0xda, 0x20, 0xb7, 0x40, 0xe5, 0xb4, 0xe1, 0xc8, 0xec, 0xf6, 0xbb, 0xbd, 0x1e, 0xd5, 0x47, 0x23,
-	0x75, 0x85, 0x4b, 0xbd, 0xdf, 0xb3, 0x68, 0xd7, 0xe4, 0xfb, 0x5a, 0xe5, 0x2f, 0xe4, 0x7b, 0x7f,
-	0xa2, 0x3f, 0x55, 0xd7, 0xf9, 0x2b, 0xf4, 0x81, 0x69, 0x98, 0x4f, 0xad, 0x43, 0x3a, 0x34, 0x87,
-	0xea, 0x06, 0x17, 0xd0, 0x18, 0xf4, 0xf4, 0xef, 0xad, 0x6f, 0xbb, 0xfd, 0x23, 0x5d, 0x25, 0xda,
-	0x8f, 0xe1, 0xf6, 0xd2, 0x33, 0xe1, 0xaa, 0x7b, 0x6c, 0x1e, 0xf4, 0xd5, 0x02, 0x7f, 0xe2, 0x9b,
-	0x52, 0x15, 0xed, 0x0f, 0xa0, 0xc4, 0x5d, 0x86, 0x7c, 0x06, 0xd5, 0xc4, 0x1b, 0x0b, 0xe8, 0x8d,
-	0x77, 0xb3, 0x67, 0x6d, 0xc7, 0x27, 0x9d, 0xc4, 0xe3, 0x12, 0x5c, 0xbb, 0x0b, 0xd5, 0x45, 0x4f,
-	0x53, 0x2e, 0x78, 0x5a, 0xf1, 0x82, 0xa7, 0x95, 0x32, 0x9e, 0x66, 0x43, 0x3d, 0xf5, 0xed, 0x9b,
-	0x47, 0x91, 0x07, 0x50, 0xe2, 0xde, 0xdf, 0x6a, 0xa2, 0x87, 0xac, 0x2d, 0x08, 0x4c, 0x91, 0xa9,
-	0xfd, 0x43, 0x01, 0x4a, 0x3c, 0xda, 0x9e, 0x07, 0xda, 0xc2, 0x15, 0x81, 0x56, 0xb9, 0x32, 0xd0,
-	0x16, 0xaf, 0x15, 0x68, 0x2b, 0x37, 0x0b, 0xb4, 0xd5, 0x4b, 0x02, 0xad, 0xf6, 0x67, 0x45, 0x68,
-	0xe8, 0x38, 0xf3, 0x10, 0x13, 0xfd, 0xfb, 0x50, 0x7c, 0xce, 0xce, 0x50, 0x3f, 0x8d, 0xed, 0x5b,
-	0x99, 0xdd, 0xa6, 0x2a, 0xa4, 0x1c, 0x40, 0xb6, 0x61, 0x45, 0xbc, 0xd0, 0x3a, 0x0e, 0xfd, 0x79,
-	0xd0, 0x52, 0x97, 0xab, 0xa7, 0x21, 0x40, 0xfb, 0x1c, 0x43, 0xde, 0x83, 0xb2, 0xff, 0xc2, 0x63,
-	0x21, 0xc6, 0xc1, 0x3c, 0x98, 0x2b, 0x8f, 0x0a, 0x2e, 0x79, 0x08, 0xa5, 0xe7, 0xae, 0xe7, 0xe0,
-	0x19, 0xe6, 0x23, 0x61, 0x46, 0xd0, 0xce, 0x13, 0xd7, 0x73, 0x28, 0x02, 0xc9, 0x3d, 0xa8, 0xf1,
-	0x5f, 0x8c, 0x7b, 0x65, 0xdc, 0x68, 0x95, 0x8f, 0x79, 0xd0, 0x7b, 0x08, 0xb5, 0x40, 0xc6, 0x10,
-	0x4c, 0x00, 0x8d, 0xed, 0x8d, 0x25, 0xe1, 0x85, 0xa6, 0x20, 0xf2, 0x15, 0xac, 0x84, 0xf6, 0x0b,
-	0x2b, 0x9d, 0xb4, 0x76, 0xf9, 0xa4, 0x46, 0x68, 0xbf, 0x48, 0x23, 0x38, 0x81, 0x52, 0x68, 0x7b,
-	0xcf, 0x5b, 0x64, 0xb3, 0xb0, 0x55, 0xa6, 0xf8, 0xac, 0x7d, 0x01, 0x25, 0x2e, 0x25, 0x8f, 0x08,
-	0xfb, 0x3d, 0xf4, 0xff, 0xee, 0x9e, 0xa9, 0x16, 0x12, 0x7f, 0xfe, 0x96, 0x47, 0x03, 0x45, 0x72,
-	0x0f, 0xf4, 0xd1, 0xa8, 0xbb, 0xaf, 0xab, 0x45, 0xad, 0x07, 0xeb, 0x7b, 0xfe, 0x2c, 0xf0, 0x23,
-	0x37, 0x66, 0xe9, 0xf2, 0xf7, 0xa0, 0xe6, 0x7a, 0x0e, 0x7b, 0x69, 0xb9, 0x0e, 0x9a, 0x56, 0x91,
-	0x56, 0x71, 0x6c, 0x38, 0xdc, 0xe4, 0x4e, 0x65, 0x31, 0x55, 0xe4, 0x26, 0x87, 0x03, 0xed, 0x2f,
-	0x15, 0x28, 0x1b, 0x1c, 0xc1, 0x8d, 0x4f, 0x9e, 0x14, 0x7a, 0x8f, 0x30, 0x4c, 0x10, 0x24, 0x93,
-	0xfb, 0x50, 0x1b, 0x6a, 0xb6, 0x37, 0x66, 0xbc, 0xe2, 0xc3, 0x3c, 0x50, 0xa3, 0xe9, 0x98, 0x7c,
-	0x99, 0xd1, 0x9f, 0x82, 0x2e, 0x7b, 0x2f, 0xa3, 0x0a, 0x7c, 0xc1, 0x12, 0x2d, 0xb6, 0xff, 0xaa,
-	0x90, 0x49, 0x6e, 0xcb, 0x12, 0x4f, 0x1f, 0xea, 0x8e, 0x1b, 0x32, 0xac, 0x23, 0xe5, 0x41, 0x3f,
-	0xb8, 0x74, 0xe1, 0x4e, 0x2f, 0x81, 0xee, 0xd4, 0xbb, 0xa3, 0x3d, 0x7d, 0xd0, 0xe3, 0x99, 0xef,
-	0x7c, 0x01, 0xed, 0x23, 0xa8, 0xa7, 0x10, 0x0c, 0xc7, 0x09, 0x48, 0x2d, 0x70, 0xf5, 0xf6, 0xf4,
-	0x74, 0xac, 0x68, 0x7f, 0xad, 0x40, 0x33, 0xd5, 0xaf, 0xd0, 0xd0, 0x6d, 0xa8, 0xd8, 0x41, 0x90,
-	0xa8, 0xb6, 0x4e, 0xcb, 0x76, 0x10, 0x18, 0x8e, 0x8c, 0x2d, 0x0a, 0x6a, 0x9b, 0xc7, 0x96, 0x4f,
-	0x01, 0x1c, 0x36, 0x71, 0x3d, 0x17, 0x85, 0x2e, 0xa2, 0xc1, 0xab, 0x8b, 0x42, 0xd3, 0x0c, 0x86,
-	0x7c, 0x09, 0xe5, 0x28, 0xb6, 0x63, 0x91, 0x2b, 0x9b, 0xdb, 0xf7, 0x33, 0xe0, 0xbc, 0x08, 0x9d,
-	0x11, 0x87, 0x51, 0x81, 0x26, 0x5f, 0xc1, 0x2d, 0xdf, 0x9b, 0x9e, 0x59, 0xf3, 0x88, 0x59, 0xee,
-	0xc4, 0x0a, 0xd9, 0x0f, 0x73, 0x37, 0x64, 0x4e, 0x3e, 0xa7, 0xae, 0x73, 0xc8, 0x51, 0xc4, 0x8c,
-	0x09, 0x95, 0x7c, 0xed, 0x6b, 0x28, 0xe3, 0x3a, 0x7c, 0xcf, 0xdf, 0x51, 0xc3, 0xd4, 0xad, 0xe1,
-	0xa0, 0xff, 0x54, 0xe8, 0x80, 0xea, 0xdd, 0x9e, 0x85, 0x44, 0x55, 0xe1, 0xc1, 0xbe, 0xa7, 0xf7,
-	0x75, 0x53, 0xef, 0xa9, 0x45, 0x9e, 0x3d, 0x74, 0x4a, 0x87, 0x54, 0x2d, 0x69, 0xff, 0x53, 0x80,
-	0x15, 0x94, 0xe7, 0xd0, 0x8f, 0xe2, 0x89, 0xfb, 0x92, 0xec, 0x41, 0x43, 0x98, 0xdd, 0xa9, 0x2c,
-	0xe8, 0xb9, 0x33, 0x68, 0x8b, 0x7b, 0x96, 0x68, 0x31, 0x90, 0x75, 0xb4, 0x9b, 0x3e, 0x27, 0x21,
-	0x45, 0x41, 0xa7, 0xbf, 0x22, 0xa4, 0xbc, 0x05, 0x95, 0x67, 0x6c, 0xe2, 0x87, 0x22, 0x04, 0xd6,
-	0x76, 0x4a, 0x71, 0x38, 0x67, 0x54, 0xd2, 0xda, 0x36, 0xc0, 0xf9, 0xfa, 0xe4, 0x01, 0xac, 0x26,
-	0xc6, 0x66, 0xa1, 0x71, 0x89, 0x93, 0x5b, 0x49, 0x88, 0x83, 0x5c, 0x75, 0xa3, 0x5c, 0xab, 0xba,
-	0xd1, 0xbe, 0x86, 0xd5, 0x64, 0x3f, 0xe2, 0xfc, 0x54, 0x21, 0x79, 0x01, 0x63, 0xca, 0x82, 0x8c,
-	0xca, 0x45, 0x19, 0xb5, 0x9f, 0x41, 0x6d, 0xe4, 0xd9, 0x41, 0x74, 0xe2, 0xc7, 0xdc, 0x7a, 0xe2,
-	0x48, 0xfa, 0xaa, 0x12, 0x47, 0x9a, 0x06, 0x15, 0x7e, 0x38, 0xf3, 0x88, 0xbb, 0xbf, 0x31, 0xe8,
-	0xee, 0x99, 0xc6, 0xb7, 0xba, 0xfa, 0x06, 0x01, 0xa8, 0xc8, 0xe7, 0x82, 0xa6, 0x41, 0xd3, 0x90,
-	0xed, 0xd8, 0x63, 0x66, 0x3b, 0x2c, 0xe4, 0x12, 0xfc, 0xe0, 0x47, 0x89, 0x04, 0x3f, 0xf8, 0x91,
-	0xf6, 0x17, 0x05, 0x68, 0x98, 0xa1, 0xed, 0x45, 0xb6, 0x30, 0xf7, 0xcf, 0xa0, 0x72, 0x82, 0x58,
-	0x74, 0xa3, 0xc6, 0x82, 0x7f, 0x66, 0x17, 0xa3, 0x12, 0x48, 0xee, 0x40, 0xe5, 0xc4, 0xf6, 0x9c,
-	0xa9, 0xd0, 0x5a, 0x85, 0xca, 0x51, 0x92, 0x1b, 0x95, 0xf3, 0xdc, 0xb8, 0x05, 0x2b, 0x33, 0x3b,
-	0x7c, 0x6e, 0x8d, 0x4f, 0x6c, 0xef, 0x98, 0x45, 0xf2, 0x60, 0xa4, 0x05, 0x36, 0x38, 0x6b, 0x4f,
-	0x70, 0xb4, 0xbf, 0x5f, 0x81, 0xf2, 0x37, 0x73, 0x16, 0x9e, 0x65, 0x04, 0xfa, 0xe0, 0xba, 0x02,
-	0xc9, 0x17, 0x17, 0x2e, 0x4b, 0xca, 0x6f, 0x2f, 0x26, 0x65, 0x22, 0x53, 0x84, 0xc8, 0x95, 0x22,
-	0x0b, 0x7c, 0x9a, 0x09, 0x63, 0xeb, 0x57, 0xd8, 0xda, 0x79, 0x70, 0x7b, 0x08, 0x95, 0x89, 0x3b,
-	0x8d, 0x51, 0x75, 0x8b, 0xd5, 0x08, 0xee, 0xa5, 0xf3, 0x08, 0xd9, 0x54, 0xc2, 0xc8, 0xbb, 0xb0,
-	0x22, 0x2a, 0x59, 0xeb, 0x07, 0xce, 0xc6, 0x82, 0x95, 0xf7, 0xa6, 0x48, 0x13, 0xbb, 0xff, 0x18,
-	0xca, 0x7e, 0xc8, 0x37, 0x5f, 0xc7, 0x25, 0xef, 0x5c, 0x58, 0x72, 0xc8, 0xb9, 0x54, 0x80, 0xc8,
-	0x87, 0x50, 0x3a, 0x71, 0xbd, 0x18, 0xb3, 0x46, 0x73, 0xfb, 0xf6, 0x05, 0xf0, 0x63, 0xd7, 0x8b,
-	0x29, 0x42, 0x78, 0x98, 0x1f, 0xfb, 0x73, 0x2f, 0x6e, 0xdd, 0xc5, 0x0c, 0x23, 0x06, 0xe4, 0x1e,
-	0x54, 0xfc, 0xc9, 0x24, 0x62, 0x31, 0x76, 0x96, 0xe5, 0x9d, 0xc2, 0xa7, 0x54, 0x12, 0xf8, 0x84,
-	0xa9, 0x3b, 0x73, 0x63, 0xec, 0x43, 0xca, 0x54, 0x0c, 0xc8, 0x2e, 0xac, 0x8d, 0xfd, 0x59, 0xe0,
-	0x4e, 0x99, 0x63, 0x8d, 0xe7, 0x61, 0xe4, 0x87, 0xad, 0x77, 0x2e, 0x1c, 0xd3, 0x9e, 0x44, 0xec,
-	0x21, 0x80, 0x36, 0xc7, 0xb9, 0x31, 0x31, 0x60, 0x83, 0x79, 0x8e, 0xb5, 0xb8, 0xce, 0xfd, 0xd7,
-	0xad, 0xb3, 0xce, 0x3c, 0x27, 0x4f, 0x4a, 0xc4, 0xc1, 0x48, 0x68, 0x61, 0xcc, 0x68, 0x6d, 0x60,
-	0x90, 0xb9, 0x77, 0x69, 0xac, 0x14, 0xe2, 0x64, 0xc2, 0xf7, 0x6f, 0xc0, 0x2d, 0x19, 0x22, 0xad,
-	0x80, 0x85, 0x13, 0x36, 0x8e, 0xad, 0x60, 0x6a, 0x7b, 0x58, 0xca, 0xa5, 0xc6, 0x4a, 0x24, 0xe4,
-	0x50, 0x20, 0x0e, 0xa7, 0xb6, 0x47, 0x34, 0xa8, 0x3f, 0x67, 0x67, 0x91, 0xc5, 0x23, 0x29, 0x76,
-	0xae, 0x29, 0xba, 0xc6, 0xe9, 0x43, 0x6f, 0x7a, 0x46, 0x7e, 0x02, 0x8d, 0xf8, 0xdc, 0xdb, 0xb0,
-	0x61, 0x6d, 0xe4, 0x4e, 0x35, 0xe3, 0x8b, 0x34, 0x0b, 0x25, 0xf7, 0xa1, 0x2a, 0x35, 0xd4, 0xba,
-	0x97, 0x5d, 0x3b, 0xa1, 0xf2, 0xc4, 0x3c, 0xb1, 0xdd, 0xa9, 0x7f, 0xca, 0x42, 0x6b, 0x16, 0xb5,
-	0xda, 0xe2, 0xb6, 0x24, 0x21, 0x1d, 0x44, 0xdc, 0x4f, 0xa3, 0x38, 0xf4, 0xbd, 0xe3, 0xd6, 0x26,
-	0xde, 0x93, 0xc8, 0xd1, 0xc5, 0xe0, 0xf7, 0x2e, 0x66, 0xfe, 0x7c, 0xf0, 0xfb, 0x1c, 0xee, 0x60,
-	0x65, 0x66, 0x3d, 0x3b, 0xb3, 0xf2, 0x68, 0x0d, 0xd1, 0x1b, 0xc8, 0xdd, 0x3d, 0x3b, 0xcc, 0x4e,
-	0x6a, 0x43, 0xcd, 0x71, 0xa3, 0xd8, 0xf5, 0xc6, 0x71, 0xab, 0x85, 0xef, 0x4c, 0xc7, 0xe4, 0x33,
-	0xb8, 0x3d, 0x73, 0x3d, 0x2b, 0xb2, 0x27, 0xcc, 0x8a, 0x5d, 0xee, 0x9b, 0x6c, 0xec, 0x7b, 0x4e,
-	0xd4, 0x7a, 0x80, 0x82, 0x93, 0x99, 0xeb, 0x8d, 0xec, 0x09, 0x33, 0xdd, 0x19, 0x1b, 0x09, 0x0e,
-	0xf9, 0x08, 0xd6, 0x11, 0x1e, 0xb2, 0x60, 0xea, 0x8e, 0x6d, 0xf1, 0xfa, 0x1f, 0xe1, 0xeb, 0xd7,
-	0x38, 0x83, 0x0a, 0x3a, 0xbe, 0xfa, 0x63, 0x68, 0x06, 0x2c, 0x8c, 0xdc, 0x28, 0xb6, 0xa4, 0x45,
-	0xbf, 0x97, 0xd5, 0xda, 0xaa, 0x64, 0x0e, 0x91, 0xd7, 0xfe, 0xcf, 0x02, 0x54, 0x84, 0x73, 0x92,
-	0x4f, 0x41, 0xf1, 0x03, 0xbc, 0x06, 0x69, 0x6e, 0x6f, 0x5e, 0xe2, 0xc1, 0x9d, 0x61, 0xc0, 0xeb,
-	0x5e, 0x3f, 0xa4, 0x8a, 0x1f, 0xdc, 0xb8, 0x28, 0xd4, 0xfe, 0x10, 0x6a, 0xc9, 0x02, 0xbc, 0xbc,
-	0xe8, 0xeb, 0xa3, 0x91, 0x65, 0x3e, 0xee, 0x0e, 0xd4, 0x02, 0xb9, 0x03, 0x24, 0x1d, 0x5a, 0x43,
-	0x6a, 0xe9, 0xdf, 0x1c, 0x75, 0xfb, 0xaa, 0x82, 0x5d, 0x1a, 0xd5, 0xbb, 0xa6, 0x4e, 0x05, 0xb2,
-	0x48, 0xee, 0xc1, 0xed, 0x2c, 0xe5, 0x1c, 0x5c, 0xc2, 0x14, 0x8c, 0x8f, 0x65, 0x52, 0x01, 0xc5,
-	0x18, 0xa8, 0x15, 0x9e, 0x16, 0xf4, 0xef, 0x8d, 0x91, 0x39, 0x52, 0xab, 0xed, 0xbf, 0x29, 0x40,
-	0x19, 0xc3, 0x06, 0x3f, 0x9f, 0x54, 0x72, 0x71, 0x5d, 0x73, 0x5e, 0xb9, 0x1a, 0xd9, 0x92, 0xaa,
-	0x81, 0x01, 0x65, 0x73, 0x79, 0xf4, 0xf9, 0xb5, 0xd6, 0x53, 0x3f, 0x85, 0x12, 0x8f, 0x52, 0xbc,
-	0x43, 0x1c, 0xd2, 0x9e, 0x4e, 0xad, 0x47, 0x06, 0x1d, 0xf1, 0x2a, 0x97, 0x40, 0xb3, 0x3b, 0xd8,
-	0xd3, 0x47, 0xe6, 0x30, 0xa1, 0xa1, 0x56, 0x1e, 0x19, 0x7d, 0x33, 0x45, 0x15, 0xb5, 0x9f, 0xd7,
-	0x60, 0x35, 0x89, 0x09, 0x22, 0x82, 0x3e, 0x82, 0x46, 0x10, 0xba, 0x33, 0x3b, 0x3c, 0x8b, 0xc6,
-	0xb6, 0x87, 0x49, 0x01, 0xb6, 0x7f, 0xb4, 0x24, 0xaa, 0x88, 0x1d, 0x1d, 0x0a, 0xec, 0x68, 0x6c,
-	0x7b, 0x34, 0x3b, 0x91, 0xf4, 0x61, 0x75, 0xc6, 0xc2, 0x63, 0xf6, 0x7b, 0xbe, 0xeb, 0xe1, 0x4a,
-	0x55, 0x8c, 0xc8, 0xef, 0x5f, 0xba, 0xd2, 0x01, 0x47, 0xff, 0x8e, 0xef, 0x7a, 0xb8, 0x56, 0x7e,
-	0x32, 0xf9, 0x04, 0xea, 0xa2, 0x12, 0x72, 0xd8, 0x04, 0x63, 0xc5, 0xb2, 0xda, 0x4f, 0xd4, 0xe8,
-	0x3d, 0x36, 0xc9, 0xc4, 0x65, 0xb8, 0x34, 0x2e, 0x37, 0xb2, 0x71, 0xf9, 0xcd, 0x6c, 0x2c, 0x5a,
-	0x11, 0x55, 0x78, 0x1a, 0x84, 0x2e, 0x38, 0x7c, 0x6b, 0x89, 0xc3, 0x77, 0x60, 0x23, 0xf1, 0x55,
-	0xcb, 0xf5, 0x26, 0xee, 0x4b, 0x2b, 0x72, 0x5f, 0x89, 0xd8, 0x53, 0xa6, 0xeb, 0x09, 0xcb, 0xe0,
-	0x9c, 0x91, 0xfb, 0x8a, 0x11, 0x23, 0xe9, 0xe0, 0x64, 0x0e, 0x5c, 0xc5, 0xab, 0xc9, 0xf7, 0x2e,
-	0x55, 0x8f, 0x68, 0xbe, 0x64, 0x46, 0xcc, 0x4d, 0x6d, 0xff, 0x52, 0x81, 0x46, 0xe6, 0x1c, 0x78,
-	0xf6, 0x16, 0xca, 0x42, 0x61, 0xc5, 0x55, 0x94, 0x50, 0x1f, 0x4a, 0xfa, 0x26, 0xd4, 0xa3, 0xd8,
-	0x0e, 0x63, 0x8b, 0x17, 0x57, 0xb2, 0xdd, 0x45, 0xc2, 0x13, 0x76, 0x46, 0x3e, 0x80, 0x35, 0xc1,
-	0x74, 0xbd, 0xf1, 0x74, 0x1e, 0xb9, 0xa7, 0xa2, 0x99, 0xaf, 0xd1, 0x26, 0x92, 0x8d, 0x84, 0x4a,
-	0xee, 0x42, 0x95, 0x67, 0x21, 0xbe, 0x86, 0x68, 0xfa, 0x2a, 0xcc, 0x73, 0xf8, 0x0a, 0x0f, 0x60,
-	0x95, 0x33, 0xce, 0xe7, 0x57, 0xc4, 0x2d, 0x33, 0xf3, 0x9c, 0xf3, 0xd9, 0x1d, 0xd8, 0x10, 0xaf,
-	0x09, 0x44, 0xf1, 0x2a, 0x2b, 0xdc, 0x3b, 0xa8, 0xd8, 0x75, 0x64, 0xc9, 0xb2, 0x56, 0x14, 0x9c,
-	0x1f, 0x01, 0xcf, 0x5e, 0x0b, 0xe8, 0xbb, 0x22, 0x94, 0x31, 0xcf, 0xc9, 0x61, 0x77, 0xe1, 0x1d,
-	0x8e, 0x9d, 0x7b, 0x76, 0x10, 0x4c, 0x5d, 0xe6, 0x58, 0x53, 0xff, 0x18, 0x43, 0x66, 0x14, 0xdb,
-	0xb3, 0xc0, 0x9a, 0x47, 0xad, 0x0d, 0x0c, 0x99, 0x6d, 0xe6, 0x39, 0x47, 0x09, 0xa8, 0xef, 0x1f,
-	0x9b, 0x09, 0xe4, 0x28, 0x6a, 0xff, 0x3e, 0xac, 0xe6, 0xec, 0x71, 0x41, 0xa7, 0x35, 0x74, 0xfe,
-	0x8c, 0x4e, 0xdf, 0x85, 0x95, 0x20, 0x64, 0xe7, 0xa2, 0xd5, 0x51, 0xb4, 0x86, 0xa0, 0x09, 0xb1,
-	0xb6, 0x60, 0x05, 0x79, 0x96, 0x20, 0xe6, 0xf3, 0x63, 0x03, 0x59, 0x87, 0xc8, 0x69, 0xbf, 0x80,
-	0x95, 0xec, 0x69, 0x93, 0x77, 0x33, 0x69, 0xa1, 0x99, 0xcb, 0x93, 0x69, 0x76, 0x48, 0x2a, 0xb2,
-	0xf5, 0x4b, 0x2a, 0x32, 0x72, 0x9d, 0x8a, 0x4c, 0xfb, 0x2f, 0xd9, 0x9c, 0x65, 0x2a, 0x84, 0x9f,
-	0x41, 0x2d, 0x90, 0xf5, 0x38, 0x5a, 0x52, 0xfe, 0x12, 0x3e, 0x0f, 0xee, 0x24, 0x95, 0x3b, 0x4d,
-	0xe7, 0xb4, 0xff, 0x56, 0x81, 0x5a, 0x5a, 0xd0, 0xe7, 0x2c, 0xef, 0xcd, 0x05, 0xcb, 0x3b, 0x90,
-	0x1a, 0x16, 0x0a, 0x7c, 0x1b, 0xa3, 0xc5, 0x27, 0xaf, 0x7f, 0xd7, 0xc5, 0xb6, 0xe7, 0x34, 0xdb,
-	0xf6, 0x6c, 0xbe, 0xae, 0xed, 0xf9, 0xe4, 0xa2, 0xc1, 0xbf, 0x95, 0xe9, 0x2d, 0x16, 0xcc, 0xbe,
-	0xfd, 0x7d, 0xae, 0x0f, 0xca, 0x26, 0x84, 0x77, 0xc4, 0x7e, 0xd2, 0x84, 0x90, 0xb6, 0x3f, 0xf7,
-	0xaf, 0xd7, 0xfe, 0x6c, 0x43, 0x45, 0xea, 0xfc, 0x0e, 0x54, 0x64, 0x4d, 0x27, 0x1b, 0x04, 0x31,
-	0x3a, 0x6f, 0x10, 0x0a, 0xb2, 0x4e, 0xd7, 0x7e, 0xae, 0x40, 0x59, 0x0f, 0x43, 0x3f, 0xd4, 0xfe,
-	0x48, 0x81, 0x3a, 0x3e, 0xed, 0xf9, 0x0e, 0xe3, 0xd9, 0x60, 0xb7, 0xdb, 0xb3, 0xa8, 0xfe, 0xcd,
-	0x91, 0x8e, 0xd9, 0xa0, 0x0d, 0x77, 0xf6, 0x86, 0x83, 0xbd, 0x23, 0x4a, 0xf5, 0x81, 0x69, 0x99,
-	0xb4, 0x3b, 0x18, 0xf1, 0xb6, 0x67, 0x38, 0x50, 0x15, 0x9e, 0x29, 0x8c, 0x81, 0xa9, 0xd3, 0x41,
-	0xb7, 0x6f, 0x89, 0x56, 0xb4, 0x88, 0x77, 0xb3, 0xba, 0xde, 0xb3, 0xf0, 0xd6, 0x51, 0x2d, 0xf1,
-	0x96, 0xd5, 0x34, 0x0e, 0xf4, 0xe1, 0x91, 0xa9, 0x96, 0xc9, 0x6d, 0x58, 0x3f, 0xd4, 0xe9, 0x81,
-	0x31, 0x1a, 0x19, 0xc3, 0x81, 0xd5, 0xd3, 0x07, 0x86, 0xde, 0x53, 0x2b, 0x7c, 0x9d, 0x5d, 0x63,
-	0xdf, 0xec, 0xee, 0xf6, 0x75, 0xb9, 0x4e, 0x95, 0x6c, 0xc2, 0x5b, 0x7b, 0xc3, 0x83, 0x03, 0xc3,
-	0x34, 0xf5, 0x9e, 0xb5, 0x7b, 0x64, 0x5a, 0x23, 0xd3, 0xe8, 0xf7, 0xad, 0xee, 0xe1, 0x61, 0xff,
-	0x29, 0x4f, 0x60, 0x35, 0x72, 0x17, 0x36, 0xf6, 0xba, 0x87, 0xdd, 0x5d, 0xa3, 0x6f, 0x98, 0x4f,
-	0xad, 0x9e, 0x31, 0xe2, 0xf3, 0x7b, 0x6a, 0x9d, 0x27, 0x6c, 0x93, 0x3e, 0xb5, 0xba, 0x7d, 0x14,
-	0xcd, 0xd4, 0xad, 0xdd, 0xee, 0xde, 0x13, 0x7d, 0xd0, 0x53, 0x81, 0x0b, 0x30, 0xea, 0x3e, 0xd2,
-	0x2d, 0x2e, 0x92, 0x65, 0x0e, 0x87, 0xd6, 0xb0, 0xdf, 0x53, 0x1b, 0xda, 0xbf, 0x14, 0xa1, 0xb4,
-	0xe7, 0x47, 0x31, 0xf7, 0x46, 0xe1, 0xac, 0x2f, 0x42, 0x37, 0x66, 0xa2, 0x7f, 0x2b, 0x53, 0xd1,
-	0x4b, 0x7f, 0x87, 0x24, 0x1e, 0x50, 0x32, 0x10, 0xeb, 0xd9, 0x19, 0xc7, 0x29, 0x88, 0x5b, 0x3b,
-	0xc7, 0xed, 0x72, 0xb2, 0x88, 0x68, 0x78, 0x85, 0x23, 0xd7, 0x2b, 0x22, 0x4e, 0x06, 0x61, 0xb9,
-	0xe0, 0xc7, 0x40, 0xb2, 0x20, 0xb9, 0x62, 0x09, 0x91, 0x6a, 0x06, 0x29, 0x96, 0xdc, 0x01, 0x18,
-	0xfb, 0xb3, 0x99, 0x1b, 0x8f, 0xfd, 0x28, 0x96, 0x5f, 0xc8, 0xda, 0x39, 0x63, 0x8f, 0x62, 0x6e,
-	0xf1, 0x33, 0x37, 0xe6, 0x8f, 0x34, 0x83, 0x26, 0x3b, 0x70, 0xcf, 0x0e, 0x82, 0xd0, 0x7f, 0xe9,
-	0xce, 0xec, 0x98, 0x59, 0xdc, 0x73, 0xed, 0x63, 0x66, 0x39, 0x6c, 0x1a, 0xdb, 0xd8, 0x13, 0x95,
-	0xe9, 0xdd, 0x0c, 0x60, 0x24, 0xf8, 0x3d, 0xce, 0xe6, 0x71, 0xd7, 0x75, 0xac, 0x88, 0xfd, 0x30,
-	0xe7, 0x1e, 0x60, 0xcd, 0x03, 0xc7, 0xe6, 0x62, 0xd6, 0x45, 0x96, 0x72, 0x9d, 0x91, 0xe4, 0x1c,
-	0x09, 0x46, 0xfb, 0x15, 0xc0, 0xb9, 0x14, 0x64, 0x1b, 0x6e, 0xf3, 0x3a, 0x9e, 0x45, 0x31, 0x73,
-	0x2c, 0xb9, 0xdb, 0x60, 0x1e, 0x47, 0x18, 0xe2, 0xcb, 0x74, 0x23, 0x65, 0xca, 0x9b, 0xc2, 0x79,
-	0x1c, 0x91, 0x9f, 0x40, 0xeb, 0xc2, 0x1c, 0x87, 0x4d, 0x19, 0x7f, 0x6d, 0x15, 0xa7, 0xdd, 0x59,
-	0x98, 0xd6, 0x13, 0x5c, 0xed, 0x4f, 0x14, 0x80, 0x7d, 0x16, 0x53, 0xc1, 0xcd, 0x34, 0xb6, 0x95,
-	0xeb, 0x36, 0xb6, 0xef, 0x27, 0x17, 0x08, 0xc5, 0xab, 0x63, 0xc0, 0x42, 0x97, 0xa1, 0xdc, 0xa4,
-	0xcb, 0xc8, 0x35, 0x11, 0xc5, 0x2b, 0x9a, 0x88, 0x52, 0xae, 0x89, 0xf8, 0x18, 0x9a, 0xf6, 0x74,
-	0xea, 0xbf, 0xe0, 0x05, 0x0d, 0x0b, 0x43, 0xe6, 0xa0, 0x11, 0x9c, 0xd7, 0xdb, 0xc8, 0xec, 0x49,
-	0x9e, 0xf6, 0xe7, 0x0a, 0x34, 0x50, 0x15, 0x51, 0xe0, 0x7b, 0x11, 0x23, 0x5f, 0x42, 0x45, 0x5e,
-	0x44, 0x8b, 0x8b, 0xfc, 0xb7, 0x33, 0xb2, 0x66, 0x70, 0xb2, 0x68, 0xa0, 0x12, 0xcc, 0x33, 0x42,
-	0xe6, 0x75, 0x97, 0x2b, 0x25, 0x45, 0x91, 0xfb, 0x50, 0x73, 0x3d, 0x4b, 0xb4, 0xd4, 0x95, 0x4c,
-	0x58, 0xac, 0xba, 0x1e, 0xd6, 0xb2, 0xed, 0x57, 0x50, 0x11, 0x2f, 0x21, 0x9d, 0x54, 0xa6, 0x8b,
-	0xfa, 0xcb, 0xdc, 0x1c, 0xa7, 0xc2, 0xc8, 0xc3, 0x29, 0xbd, 0x2e, 0x40, 0xb7, 0xa0, 0x7a, 0xca,
-	0x9b, 0x0f, 0xbc, 0xf4, 0xe3, 0xea, 0x4d, 0x86, 0xda, 0x1f, 0x97, 0x00, 0x0e, 0xe7, 0x4b, 0x0c,
-	0xa4, 0x71, 0x5d, 0x03, 0xe9, 0xe4, 0xf4, 0xf8, 0x7a, 0x99, 0x7f, 0x75, 0x43, 0x59, 0xd2, 0x69,
-	0x17, 0x6f, 0xda, 0x69, 0xdf, 0x87, 0x6a, 0x1c, 0xce, 0xb9, 0xa3, 0x08, 0x63, 0x4a, 0x5b, 0x5a,
-	0x49, 0x25, 0x6f, 0x42, 0x79, 0xe2, 0x87, 0x63, 0x86, 0x8e, 0x95, 0xb2, 0x05, 0xed, 0xc2, 0x65,
-	0x52, 0xed, 0xb2, 0xcb, 0x24, 0xde, 0xa0, 0x45, 0xf2, 0x1e, 0x0d, 0x0b, 0x99, 0x7c, 0x83, 0x96,
-	0x5c, 0xb1, 0xd1, 0x14, 0x44, 0xbe, 0x81, 0xa6, 0x3d, 0x8f, 0x7d, 0xcb, 0xe5, 0x15, 0xda, 0xd4,
-	0x1d, 0x9f, 0x61, 0xd9, 0xdd, 0xcc, 0x7f, 0xaf, 0x4f, 0x0f, 0xaa, 0xd3, 0x9d, 0xc7, 0xbe, 0xe1,
-	0x1c, 0x22, 0x72, 0xa7, 0x2a, 0x93, 0x12, 0x5d, 0xb1, 0x33, 0x64, 0xed, 0xc7, 0xb0, 0x92, 0x85,
-	0xf1, 0x04, 0x24, 0x81, 0xea, 0x1b, 0x3c, 0x3b, 0x8d, 0x78, 0x6a, 0x1b, 0x98, 0x46, 0xb7, 0xaf,
-	0x16, 0xb4, 0x18, 0x1a, 0xb8, 0xbc, 0xf4, 0x8e, 0xeb, 0xba, 0xfd, 0x03, 0x28, 0x61, 0xf8, 0x55,
-	0x2e, 0x7c, 0x0f, 0xc1, 0x98, 0x8b, 0xcc, 0xbc, 0xf9, 0x15, 0xb3, 0xe6, 0xf7, 0xdf, 0x05, 0x58,
-	0x31, 0xfd, 0xf9, 0xf8, 0xe4, 0xa2, 0x01, 0xc2, 0xaf, 0x3b, 0x42, 0x2d, 0x31, 0x1f, 0xe5, 0xa6,
-	0xe6, 0x93, 0x5a, 0x47, 0x71, 0x89, 0x75, 0xdc, 0xf4, 0xcc, 0xb5, 0x2f, 0x60, 0x55, 0x6e, 0x5e,
-	0x6a, 0x3d, 0xd1, 0x66, 0xe1, 0x0a, 0x6d, 0x6a, 0xbf, 0x50, 0x60, 0x55, 0xc4, 0xf7, 0xff, 0xbb,
-	0xd2, 0x2a, 0x37, 0x0c, 0xeb, 0xe5, 0x1b, 0x5d, 0x1e, 0xfd, 0xbf, 0xf4, 0x34, 0x6d, 0x08, 0xcd,
-	0x44, 0x7d, 0x37, 0x50, 0xfb, 0x15, 0x46, 0xfc, 0x8b, 0x02, 0x34, 0x06, 0xec, 0xe5, 0x92, 0x20,
-	0x5a, 0xbe, 0xee, 0x71, 0x7c, 0x98, 0x2b, 0x57, 0x1b, 0xdb, 0xeb, 0x59, 0x19, 0xc4, 0xd5, 0x63,
-	0x52, 0xc1, 0xa6, 0xb7, 0xa8, 0xca, 0xf2, 0x5b, 0xd4, 0xd2, 0x62, 0xb7, 0x9e, 0xb9, 0xc5, 0x2b,
-	0x2e, 0xbb, 0xc5, 0xd3, 0xfe, 0xad, 0x08, 0x0d, 0x6c, 0x90, 0x29, 0x8b, 0xe6, 0xd3, 0x38, 0x27,
-	0x4c, 0xe1, 0x6a, 0x61, 0x3a, 0x50, 0x09, 0x71, 0x92, 0x74, 0xa5, 0x4b, 0x83, 0xbf, 0x40, 0x61,
-	0x6b, 0xfc, 0xdc, 0x0d, 0x02, 0xe6, 0x58, 0x82, 0x92, 0x14, 0x30, 0x4d, 0x49, 0x16, 0x22, 0x44,
-	0xbc, 0xfc, 0x9c, 0xf9, 0x21, 0x4b, 0x51, 0x45, 0xbc, 0x4f, 0x68, 0x70, 0x5a, 0x02, 0xc9, 0xdd,
-	0x37, 0x88, 0xca, 0xe0, 0xfc, 0xbe, 0x21, 0xed, 0x35, 0x91, 0x5b, 0x47, 0xae, 0xe8, 0x35, 0x91,
-	0xcd, 0xbb, 0xa8, 0x99, 0x3d, 0x9d, 0x5a, 0x7e, 0x10, 0xa1, 0xd3, 0xd4, 0x68, 0x0d, 0x09, 0xc3,
-	0x20, 0x22, 0x5f, 0x43, 0x7a, 0x5d, 0x2c, 0x6f, 0xc9, 0xc5, 0x39, 0xb6, 0x2e, 0xbb, 0x58, 0xa0,
-	0xab, 0xe3, 0xdc, 0xfd, 0xcf, 0x92, 0x1b, 0xea, 0xca, 0x4d, 0x6f, 0xa8, 0x1f, 0x42, 0x59, 0xc4,
-	0xa8, 0xda, 0xeb, 0x62, 0x94, 0xc0, 0x65, 0xed, 0xb3, 0x91, 0xb7, 0xcf, 0x5f, 0x16, 0x80, 0x74,
-	0xa7, 0x53, 0x7f, 0x6c, 0xc7, 0xcc, 0x70, 0xa2, 0x8b, 0x66, 0x7a, 0xed, 0xcf, 0x2e, 0x9f, 0x41,
-	0x7d, 0xe6, 0x3b, 0x6c, 0x6a, 0x25, 0xdf, 0x94, 0x2e, 0xad, 0x7e, 0x10, 0xc6, 0x5b, 0x52, 0x02,
-	0x25, 0xbc, 0xc4, 0x51, 0xb0, 0xee, 0xc0, 0x67, 0xde, 0x84, 0xcd, 0xec, 0x97, 0xb2, 0x14, 0xe1,
-	0x8f, 0xa4, 0x03, 0xd5, 0x90, 0x45, 0x2c, 0x3c, 0x65, 0x57, 0x16, 0x55, 0x09, 0x48, 0x7b, 0x06,
-	0x1b, 0xb9, 0x1d, 0x49, 0x47, 0xbe, 0x85, 0x5f, 0x2b, 0xc3, 0x58, 0x7e, 0xb4, 0x12, 0x03, 0xfe,
-	0x3a, 0xe6, 0x25, 0x9f, 0x41, 0xf9, 0x63, 0xea, 0xf0, 0xc5, 0xab, 0xe2, 0xec, 0x1e, 0xa8, 0x59,
-	0x4d, 0xbb, 0x63, 0x0c, 0x36, 0xf2, 0x54, 0x0a, 0xd7, 0x3b, 0x15, 0xed, 0xef, 0x0a, 0xb0, 0xde,
-	0x75, 0x1c, 0xf1, 0x77, 0xc3, 0x25, 0xaa, 0x2f, 0x5e, 0x57, 0xf5, 0x0b, 0x81, 0x58, 0x84, 0x89,
-	0x6b, 0x05, 0xe2, 0x0f, 0xa1, 0x92, 0xd6, 0x5a, 0xc5, 0x05, 0x77, 0x16, 0x72, 0x51, 0x09, 0xd0,
-	0x6e, 0x01, 0xc9, 0x0a, 0x2b, 0xb4, 0xaa, 0xfd, 0x69, 0x11, 0xee, 0xee, 0xb2, 0x63, 0xd7, 0xcb,
-	0xbe, 0xe2, 0x57, 0xdf, 0xc9, 0xc5, 0x4f, 0x65, 0x9f, 0xc1, 0xba, 0x28, 0xe4, 0x93, 0x7f, 0x62,
-	0x59, 0xec, 0x58, 0x7e, 0x9d, 0x94, 0xb1, 0x6a, 0x0d, 0xf9, 0x07, 0x92, 0xad, 0xe3, 0x7f, 0xc5,
-	0x1c, 0x3b, 0xb6, 0x9f, 0xd9, 0x11, 0xb3, 0x5c, 0x47, 0xfe, 0x59, 0x06, 0x12, 0x92, 0xe1, 0x90,
-	0x21, 0x94, 0xb8, 0x0d, 0xa2, 0xeb, 0x36, 0xb7, 0xb7, 0x33, 0x62, 0x5d, 0xb2, 0x95, 0xac, 0x02,
-	0x0f, 0x7c, 0x87, 0xed, 0x54, 0x8f, 0x06, 0x4f, 0x06, 0xc3, 0xef, 0x06, 0x14, 0x17, 0x22, 0x06,
-	0xdc, 0x0a, 0x42, 0x76, 0xea, 0xfa, 0xf3, 0xc8, 0xca, 0x9e, 0x44, 0xf5, 0xca, 0x94, 0xb8, 0x91,
-	0xcc, 0xc9, 0x10, 0xb5, 0x9f, 0xc2, 0xda, 0xc2, 0xcb, 0x78, 0x6d, 0x26, 0x5f, 0xa7, 0xbe, 0x41,
-	0x56, 0xa1, 0x8e, 0x1f, 0xbb, 0x97, 0x7f, 0xfb, 0xd6, 0xfe, 0xb5, 0x80, 0x57, 0x4c, 0x33, 0x37,
-	0xbe, 0x59, 0x06, 0xfb, 0xcd, 0x7c, 0x06, 0x83, 0xed, 0x77, 0xf3, 0xe6, 0x9b, 0x59, 0xb0, 0xf3,
-	0xad, 0x00, 0xa6, 0x41, 0xa4, 0x6d, 0x43, 0x55, 0xd2, 0xc8, 0x6f, 0xc1, 0x5a, 0xe8, 0xfb, 0x71,
-	0xd2, 0x89, 0x8a, 0x0e, 0xe4, 0xf2, 0x3f, 0xdb, 0xac, 0x72, 0xb0, 0x48, 0x06, 0x4f, 0xf2, 0xbd,
-	0x48, 0x59, 0xfc, 0x0d, 0x44, 0x0e, 0x77, 0x1b, 0xbf, 0x5b, 0x4f, 0xff, 0xb7, 0xfb, 0xbf, 0x01,
-	0x00, 0x00, 0xff, 0xff, 0x35, 0x9f, 0x30, 0x98, 0xf2, 0x2b, 0x00, 0x00,
+var File_datastore_v3_proto protoreflect.FileDescriptor
+
+var file_datastore_v3_proto_rawDesc = []byte{
+	0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x76, 0x33, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22,
+	0x08, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe9, 0x08, 0x0a, 0x0d, 0x50, 0x72,
+	0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48,
+	0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x27, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61,
+	0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02,
+	0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x25, 0x0a, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x54, 0x79, 0x70, 0x65, 0x48, 0x04, 0x52, 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65,
+	0x48, 0x05, 0x52, 0x09, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x58, 0x0a, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x54, 0x79, 0x70, 0x65, 0x48, 0x06, 0x52, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+	0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x2c, 0x0a, 0x0e, 0x50, 0x6f,
+	0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x01,
+	0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x79, 0x1a, 0x8a, 0x02, 0x0a, 0x0d, 0x55, 0x73, 0x65,
+	0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d,
+	0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c,
+	0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18,
+	0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69,
+	0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x88,
+	0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f,
+	0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
+	0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74,
+	0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61,
+	0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01,
+	0x28, 0x09, 0x48, 0x02, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x50,
+	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e,
+	0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65, 0x64, 0x65,
+	0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x15,
+	0x0a, 0x13, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f,
+	0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0x9d, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
+	0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03,
+	0x61, 0x70, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x22,
+	0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01,
+	0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x88,
+	0x01, 0x01, 0x12, 0x5d, 0x0a, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x54, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x1a, 0x63, 0x0a, 0x0f, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x10,
+	0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a,
+	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a,
+	0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f,
+	0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc7, 0x06, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
+	0x74, 0x79, 0x12, 0x3a, 0x0a, 0x07, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x4d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67,
+	0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x24,
+	0x0a, 0x0b, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x55, 0x72,
+	0x69, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x75, 0x6c, 0x74,
+	0x69, 0x70, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x75, 0x6c, 0x74,
+	0x69, 0x70, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x61, 0x62,
+	0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, 0x74, 0x73,
+	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e,
+	0x46, 0x74, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x15, 0x66, 0x74, 0x73, 0x54, 0x6f, 0x6b, 0x65,
+	0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01,
+	0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x04, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x22, 0xc5,
+	0x02, 0x0a, 0x07, 0x4d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f,
+	0x5f, 0x4d, 0x45, 0x41, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4c,
+	0x4f, 0x42, 0x10, 0x0e, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x0f, 0x12, 0x0e,
+	0x0a, 0x0a, 0x42, 0x59, 0x54, 0x45, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x10, 0x12, 0x11,
+	0x0a, 0x0d, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10,
+	0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x02,
+	0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x54, 0x49, 0x54, 0x4c, 0x45, 0x10, 0x03,
+	0x12, 0x10, 0x0a, 0x0c, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54,
+	0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x53, 0x55, 0x4d, 0x4d, 0x41,
+	0x52, 0x59, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x55, 0x54,
+	0x48, 0x4f, 0x52, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x44, 0x5f, 0x57, 0x48, 0x45, 0x4e,
+	0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x47, 0x44, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x08,
+	0x12, 0x10, 0x0a, 0x0c, 0x47, 0x45, 0x4f, 0x52, 0x53, 0x53, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54,
+	0x10, 0x09, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x44, 0x5f, 0x49, 0x4d, 0x10, 0x0a, 0x12, 0x12, 0x0a,
+	0x0e, 0x47, 0x44, 0x5f, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10,
+	0x0b, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x44, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x41, 0x4c, 0x41, 0x44,
+	0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0c, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x44, 0x5f, 0x52, 0x41,
+	0x54, 0x49, 0x4e, 0x47, 0x10, 0x0d, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4c, 0x4f, 0x42, 0x4b, 0x45,
+	0x59, 0x10, 0x11, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52,
+	0x4f, 0x54, 0x4f, 0x10, 0x13, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x56,
+	0x41, 0x4c, 0x55, 0x45, 0x10, 0x12, 0x22, 0x35, 0x0a, 0x15, 0x46, 0x74, 0x73, 0x54, 0x6f, 0x6b,
+	0x65, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+	0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x4d,
+	0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x54, 0x4f, 0x4d, 0x10, 0x02, 0x42, 0x0a, 0x0a,
+	0x08, 0x5f, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x65,
+	0x61, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x65,
+	0x61, 0x72, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x74, 0x73,
+	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x22,
+	0x9e, 0x01, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x35, 0x0a, 0x07, 0x45, 0x6c, 0x65, 0x6d,
+	0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65,
+	0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a,
+	0x5f, 0x0a, 0x0b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12,
+	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79,
+	0x70, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00,
+	0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01,
+	0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x22, 0x75, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x0a,
+	0x03, 0x61, 0x70, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12,
+	0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65,
+	0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x61,
+	0x74, 0x68, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x6d,
+	0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72,
+	0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64,
+	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, 0x74,
+	0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x69, 0x63,
+	0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65,
+	0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x06,
+	0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65,
+	0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12,
+	0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
+	0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65,
+	0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01,
+	0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x15, 0x0a,
+	0x13, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e,
+	0x74, 0x69, 0x74, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74,
+	0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xd6, 0x03, 0x0a, 0x0b,
+	0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x26, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03,
+	0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72,
+	0x6f, 0x75, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69,
+	0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72,
+	0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72,
+	0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x6e,
+	0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x01,
+	0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6b, 0x69, 0x6e,
+	0x64, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6b,
+	0x69, 0x6e, 0x64, 0x55, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x72, 0x6f,
+	0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+	0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x0c, 0x72, 0x61,
+	0x77, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f,
+	0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0b, 0x72, 0x61, 0x77, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
+	0x74, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x03, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x88, 0x01, 0x01, 0x22, 0x3e, 0x0a, 0x04, 0x4b,
+	0x69, 0x6e, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a,
+	0x0a, 0x47, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a,
+	0x08, 0x47, 0x44, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x47,
+	0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x42, 0x08, 0x0a, 0x06, 0x5f,
+	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x42, 0x0b,
+	0x0a, 0x09, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x07, 0x0a, 0x05, 0x5f,
+	0x72, 0x61, 0x6e, 0x6b, 0x22, 0x44, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74,
+	0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x64,
+	0x65, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x69, 0x6e, 0x64,
+	0x65, 0x78, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb4, 0x02, 0x0a, 0x05, 0x49,
+	0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74,
+	0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74,
+	0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f,
+	0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f,
+	0x72, 0x12, 0x39, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x49, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54, 0x79,
+	0x70, 0x65, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x1a, 0xb2, 0x01, 0x0a,
+	0x0c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a,
+	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54,
+	0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52,
+	0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x22, 0x34, 0x0a,
+	0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f,
+	0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e,
+	0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e,
+	0x47, 0x10, 0x02, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x22, 0xba, 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49,
+	0x6e, 0x64, 0x65, 0x78, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69,
+	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x0a, 0x64,
+	0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x10, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65,
+	0x78, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a,
+	0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69,
+	0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73,
+	0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x14, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x75, 0x73, 0x65,
+	0x5f, 0x69, 0x66, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x00, 0x52, 0x11, 0x6f, 0x6e, 0x6c, 0x79, 0x55, 0x73, 0x65, 0x49, 0x66, 0x52,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x88, 0x01, 0x01, 0x22, 0x49, 0x0a, 0x05, 0x53, 0x74,
+	0x61, 0x74, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a,
+	0x0a, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0e, 0x0a,
+	0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a,
+	0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52,
+	0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x75,
+	0x73, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x93,
+	0x02, 0x0a, 0x0c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x12,
+	0x43, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x2e, 0x49, 0x6e,
+	0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65,
+	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01,
+	0x01, 0x12, 0x1b, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x08, 0x48, 0x01, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x61,
+	0x0a, 0x0a, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d,
+	0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d,
+	0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f,
+	0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x62, 0x65,
+	0x66, 0x6f, 0x72, 0x65, 0x22, 0x56, 0x0a, 0x0d, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x6f, 0x73,
+	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06,
+	0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06,
+	0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65,
+	0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x22, 0x3e, 0x0a, 0x08,
+	0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x73, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x73, 0x22, 0x22, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00,
+	0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x22, 0x2f, 0x0a, 0x0e,
+	0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x15,
+	0x0a, 0x03, 0x71, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x71,
+	0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x71, 0x6f, 0x73, 0x22, 0xb3, 0x01,
+	0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a,
+	0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e,
+	0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64,
+	0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x10, 0x0a,
+	0x03, 0x61, 0x70, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12,
+	0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x43, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64,
+	0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e,
+	0x67, 0x65, 0x73, 0x22, 0xe6, 0x0f, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x36, 0x0a,
+	0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e,
+	0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64,
+	0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f,
+	0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x6e,
+	0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6b,
+	0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x6b, 0x69, 0x6e,
+	0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72,
+	0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x03, 0x52, 0x08,
+	0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x06, 0x46,
+	0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69,
+	0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+	0x12, 0x26, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79,
+	0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
+	0x51, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65,
+	0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54,
+	0x79, 0x70, 0x65, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x04, 0x68, 0x69,
+	0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x48, 0x69, 0x6e, 0x74, 0x48,
+	0x05, 0x52, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f,
+	0x75, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x05, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18,
+	0x0c, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88,
+	0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28,
+	0x05, 0x48, 0x08, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a,
+	0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72,
+	0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f,
+	0x72, 0x48, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72,
+	0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x6f,
+	0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x1f, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x48, 0x0a,
+	0x52, 0x11, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72,
+	0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73,
+	0x69, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70,
+	0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70,
+	0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x35, 0x0a, 0x14, 0x72, 0x65,
+	0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6c,
+	0x61, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0b, 0x52, 0x12, 0x72, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x50, 0x65, 0x72, 0x66, 0x65, 0x63, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x88, 0x01,
+	0x01, 0x12, 0x20, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x15,
+	0x20, 0x01, 0x28, 0x08, 0x48, 0x0c, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x4f, 0x6e, 0x6c, 0x79,
+	0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x48, 0x0d, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88,
+	0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x18, 0x19, 0x20,
+	0x01, 0x28, 0x08, 0x48, 0x0e, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x88, 0x01,
+	0x01, 0x12, 0x24, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x73,
+	0x18, 0x1a, 0x20, 0x01, 0x28, 0x03, 0x48, 0x0f, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76,
+	0x65, 0x72, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e,
+	0x67, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x48, 0x10, 0x52, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e,
+	0x67, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x21, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f,
+	0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x67, 0x72, 0x6f,
+	0x75, 0x70, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x22, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x67, 0x72, 0x6f, 0x75, 0x70,
+	0x42, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f,
+	0x0a, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08,
+	0x48, 0x11, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12,
+	0x36, 0x0a, 0x15, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+	0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x03, 0x48, 0x12,
+	0x52, 0x12, 0x6d, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63,
+	0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x66, 0x65, 0x5f,
+	0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x24, 0x20, 0x03,
+	0x28, 0x09, 0x52, 0x0f, 0x73, 0x61, 0x66, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4e,
+	0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x6f,
+	0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x48, 0x13, 0x52, 0x0d, 0x70,
+	0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x1a,
+	0xfd, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34,
+	0x0a, 0x02, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6c,
+	0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
+	0x52, 0x02, 0x6f, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+	0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f,
+	0x70, 0x65, 0x72, 0x74, 0x79, 0x22, 0x87, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
+	0x6f, 0x72, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09,
+	0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c,
+	0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41,
+	0x4c, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54,
+	0x48, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52,
+	0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x04,
+	0x12, 0x09, 0x0a, 0x05, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x05, 0x12, 0x06, 0x0a, 0x02, 0x49,
+	0x4e, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x07, 0x1a,
+	0xb4, 0x01, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a,
+	0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x69, 0x72,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f,
+	0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88,
+	0x01, 0x01, 0x22, 0x34, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+	0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x53, 0x43,
+	0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x43,
+	0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x04, 0x48, 0x69, 0x6e, 0x74, 0x12, 0x08,
+	0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x52, 0x44, 0x45,
+	0x52, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x4e, 0x43,
+	0x45, 0x53, 0x54, 0x4f, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x02, 0x12, 0x10, 0x0a,
+	0x0c, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x03, 0x42,
+	0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e,
+	0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69,
+	0x6e, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x42,
+	0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79,
+	0x42, 0x07, 0x0a, 0x05, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f,
+	0x75, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08,
+	0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6d,
+	0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x42, 0x16, 0x0a, 0x14,
+	0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75,
+	0x72, 0x73, 0x6f, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+	0x5f, 0x70, 0x65, 0x72, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x42, 0x0c, 0x0a,
+	0x0a, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
+	0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
+	0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x61, 0x69, 0x6c,
+	0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x72, 0x6f,
+	0x6e, 0x67, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x42,
+	0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x74, 0x69, 0x6d,
+	0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x65,
+	0x72, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0xd1, 0x0a, 0x0a,
+	0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x4a,
+	0x0a, 0x0b, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x72,
+	0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x50,
+	0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x50, 0x0a, 0x0d, 0x4d, 0x65,
+	0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f,
+	0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67,
+	0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x4d,
+	0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x32, 0x0a, 0x09,
+	0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x10, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65,
+	0x78, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x44, 0x65, 0x66, 0x88, 0x01, 0x01,
+	0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a,
+	0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x05,
+	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x73,
+	0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6b, 0x65, 0x79,
+	0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
+	0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72,
+	0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x13, 0x64, 0x69,
+	0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x69, 0x78, 0x5f, 0x73, 0x69, 0x7a,
+	0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x11, 0x64, 0x69, 0x73, 0x74, 0x69,
+	0x6e, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x69, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12,
+	0x52, 0x0a, 0x0c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18,
+	0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e,
+	0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
+	0x48, 0x04, 0x52, 0x0c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+	0x88, 0x01, 0x01, 0x1a, 0xe4, 0x03, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53,
+	0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78,
+	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x69,
+	0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x73,
+	0x74, 0x61, 0x72, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
+	0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a,
+	0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49,
+	0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x65,
+	0x6e, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x06,
+	0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6e, 0x64,
+	0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08,
+	0x48, 0x04, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
+	0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73,
+	0x74, 0x66, 0x69, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09,
+	0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x66,
+	0x69, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
+	0x65, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
+	0x47, 0x0a, 0x1e, 0x65, 0x6e, 0x64, 0x5f, 0x75, 0x6e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64,
+	0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75,
+	0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x1a, 0x65, 0x6e, 0x64, 0x55, 0x6e,
+	0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x55, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x64,
+	0x65, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
+	0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x6e,
+	0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x6e,
+	0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x65, 0x6e, 0x64, 0x5f,
+	0x75, 0x6e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x73, 0x1a, 0x8e, 0x01, 0x0a, 0x11, 0x4d,
+	0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65,
+	0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+	0x21, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+	0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66,
+	0x69, 0x78, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0xa6, 0x01, 0x0a, 0x10,
+	0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
+	0x12, 0x1f, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, 0x0e, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x88, 0x01,
+	0x01, 0x12, 0x17, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x6e,
+	0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+	0x63, 0x65, 0x48, 0x02, 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x88, 0x01,
+	0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x42, 0x07,
+	0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x6e, 0x63, 0x65,
+	0x73, 0x74, 0x6f, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x64,
+	0x65, 0x66, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a,
+	0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, 0x69, 0x73, 0x74,
+	0x69, 0x6e, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x69, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42,
+	0x0f, 0x0a, 0x0d, 0x5f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+	0x22, 0xe5, 0x03, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72,
+	0x73, 0x6f, 0x72, 0x12, 0x47, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72,
+	0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52,
+	0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x1a, 0xfc, 0x02, 0x0a,
+	0x0c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a,
+	0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12,
+	0x55, 0x0a, 0x0a, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1d, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x2e, 0x50,
+	0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65,
+	0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x49, 0x6e, 0x64, 0x65,
+	0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x20, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79,
+	0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x63,
+	0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0e,
+	0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x88, 0x01,
+	0x01, 0x1a, 0x6e, 0x0a, 0x0e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54,
+	0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18,
+	0x1e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
+	0x79, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1f, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
+	0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42,
+	0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+	0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x06, 0x43, 0x75, 0x72, 0x73,
+	0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x06, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x15, 0x0a, 0x03, 0x61, 0x70,
+	0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x61, 0x70, 0x70, 0x88, 0x01,
+	0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x61, 0x70, 0x70, 0x22, 0x95, 0x02, 0x0a, 0x05, 0x45, 0x72,
+	0x72, 0x6f, 0x72, 0x22, 0x8b, 0x02, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64,
+	0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x42,
+	0x41, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16,
+	0x43, 0x4f, 0x4e, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53,
+	0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45,
+	0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a,
+	0x4e, 0x45, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07,
+	0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52,
+	0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x06,
+	0x12, 0x12, 0x0a, 0x0e, 0x42, 0x49, 0x47, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52,
+	0x4f, 0x52, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45,
+	0x44, 0x5f, 0x42, 0x55, 0x54, 0x5f, 0x53, 0x54, 0x49, 0x4c, 0x4c, 0x5f, 0x41, 0x50, 0x50, 0x4c,
+	0x59, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49,
+	0x4c, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x09, 0x12,
+	0x19, 0x0a, 0x15, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45,
+	0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x41,
+	0x46, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4f, 0x4c, 0x44, 0x10,
+	0x0b, 0x22, 0xce, 0x05, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6e,
+	0x64, 0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74,
+	0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52,
+	0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73,
+	0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x77, 0x72,
+	0x69, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0c, 0x65, 0x6e,
+	0x74, 0x69, 0x74, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a,
+	0x12, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79,
+	0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x10, 0x65, 0x6e, 0x74,
+	0x69, 0x74, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01,
+	0x12, 0x43, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x05,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x43, 0x6f, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74,
+	0x54, 0x79, 0x70, 0x65, 0x48, 0x04, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f,
+	0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x19, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69,
+	0x6d, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x6c,
+	0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x17, 0x61, 0x70, 0x70, 0x72,
+	0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x65,
+	0x6c, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x64, 0x5f, 0x73, 0x65, 0x71,
+	0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20,
+	0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x11, 0x69, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63,
+	0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x1a, 0xbf, 0x01, 0x0a, 0x0e,
+	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x37,
+	0x0a, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69,
+	0x74, 0x79, 0x5f, 0x70, 0x75, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
+	0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79,
+	0x50, 0x75, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x72, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x16, 0x72, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x44, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x75, 0x74, 0x73,
+	0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65,
+	0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x42, 0x0f, 0x0a,
+	0x0d, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x42, 0x14,
+	0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62,
+	0x79, 0x74, 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f,
+	0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74,
+	0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x0d, 0x0a,
+	0x0b, 0x5f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x42, 0x1c, 0x0a, 0x1a,
+	0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6f,
+	0x72, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69,
+	0x64, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74,
+	0x65, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06,
+	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01,
+	0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01,
+	0x12, 0x24, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x73, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65,
+	0x72, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67,
+	0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x65, 0x66,
+	0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0d, 0x61,
+	0x6c, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42,
+	0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74,
+	0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x66,
+	0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73,
+	0x74, 0x72, 0x6f, 0x6e, 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f,
+	0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x22, 0xd6, 0x02, 0x0a, 0x0b, 0x47, 0x65, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69,
+	0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x45, 0x6e, 0x74,
+	0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18,
+	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x64, 0x65, 0x66,
+	0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65,
+	0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x4f, 0x72, 0x64,
+	0x65, 0x72, 0x88, 0x01, 0x01, 0x1a, 0xac, 0x01, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x00, 0x52, 0x06,
+	0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x03,
+	0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
+	0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+	0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65,
+	0x72, 0x22, 0xdb, 0x04, 0x0a, 0x0a, 0x50, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74,
+	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68,
+	0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69,
+	0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+	0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
+	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63,
+	0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
+	0x73, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d,
+	0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0e, 0x63, 0x6f, 0x6d,
+	0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x07, 0x74,
+	0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x07,
+	0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6f,
+	0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x05, 0x66, 0x6f, 0x72,
+	0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68,
+	0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0b, 0x6d,
+	0x61, 0x72, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a,
+	0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70,
+	0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x4d,
+	0x0a, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x69, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+	0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x75,
+	0x74, 0x6f, 0x49, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x05, 0x52, 0x0c, 0x61, 0x75,
+	0x74, 0x6f, 0x49, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01, 0x01, 0x22, 0x2b, 0x0a,
+	0x0c, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0b, 0x0a,
+	0x07, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x45,
+	0x51, 0x55, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68,
+	0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65,
+	0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f,
+	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f,
+	0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x69, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22,
+	0x82, 0x01, 0x0a, 0x0b, 0x50, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+	0x63, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x88, 0x01,
+	0x01, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03,
+	0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f,
+	0x63, 0x6f, 0x73, 0x74, 0x22, 0x93, 0x02, 0x0a, 0x0c, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18,
+	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69,
+	0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
+	0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
+	0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6f, 0x72,
+	0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63,
+	0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+	0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61,
+	0x70, 0x73, 0x68, 0x6f, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x42, 0x0a, 0x0d, 0x54, 0x6f,
+	0x75, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x63,
+	0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f,
+	0x73, 0x74, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x83,
+	0x03, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74,
+	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68,
+	0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79,
+	0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52,
+	0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12,
+	0x1d, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
+	0x48, 0x02, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19,
+	0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52,
+	0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x72,
+	0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48,
+	0x04, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x88, 0x01,
+	0x01, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x09, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68,
+	0x6f, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0e, 0x0a,
+	0x0c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a,
+	0x08, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6f,
+	0x72, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x43, 0x6f, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01,
+	0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63,
+	0x6f, 0x73, 0x74, 0x22, 0xf3, 0x01, 0x0a, 0x0b, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00,
+	0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x06, 0x63,
+	0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x06,
+	0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01,
+	0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x05, 0x48, 0x02, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d,
+	0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48,
+	0x03, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a,
+	0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0a, 0x0a,
+	0x08, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x22, 0xf1, 0x04, 0x0a, 0x0b, 0x51, 0x75,
+	0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2e, 0x0a, 0x06, 0x63, 0x75, 0x72,
+	0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06,
+	0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73,
+	0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74,
+	0x6f, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x6b, 0x69,
+	0x70, 0x70, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x05, 0x48, 0x01, 0x52, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73,
+	0x75, 0x6c, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x6f, 0x72, 0x65, 0x5f,
+	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6d,
+	0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6b, 0x65,
+	0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52,
+	0x08, 0x6b, 0x65, 0x79, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a,
+	0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08,
+	0x48, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01,
+	0x12, 0x20, 0x0a, 0x09, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x70, 0x73, 0x18, 0x0a, 0x20,
+	0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x08, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x4f, 0x70, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x44, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x71,
+	0x75, 0x65, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51,
+	0x75, 0x65, 0x72, 0x79, 0x48, 0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64,
+	0x51, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70,
+	0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f,
+	0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x0e,
+	0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01,
+	0x01, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d,
+	0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64,
+	0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20,
+	0x03, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07,
+	0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x6b, 0x69, 0x70,
+	0x70, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
+	0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e,
+	0x64, 0x65, 0x78, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x6d, 0x61,
+	0x6c, 0x6c, 0x5f, 0x6f, 0x70, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69,
+	0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f,
+	0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8e, 0x02,
+	0x0a, 0x12, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48,
+	0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x09,
+	0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65,
+	0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4b, 0x65,
+	0x79, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x03, 0x48, 0x02, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a,
+	0x03, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x03, 0x6d, 0x61,
+	0x78, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18,
+	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42,
+	0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x07, 0x0a,
+	0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x61, 0x78, 0x22, 0x70,
+	0x0a, 0x13, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65,
+	0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x0a,
+	0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04,
+	0x63, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x73, 0x74,
+	0x22, 0x43, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64,
+	0x69, 0x63, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05,
+	0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xbb, 0x01, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x41, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68,
+	0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a,
+	0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
+	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe9, 0x03, 0x0a, 0x17, 0x42, 0x65,
+	0x67, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a,
+	0x03, 0x61, 0x70, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12,
+	0x2f, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c,
+	0x65, 0x5f, 0x65, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x61, 0x6c,
+	0x6c, 0x6f, 0x77, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x45, 0x67, 0x88, 0x01, 0x01,
+	0x12, 0x24, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73,
+	0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63,
+	0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x03, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65,
+	0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f,
+	0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72,
+	0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x13, 0x70, 0x72, 0x65,
+	0x76, 0x69, 0x6f, 0x75, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x88, 0x01, 0x01, 0x22, 0x3d, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
+	0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x4c, 0x59,
+	0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45,
+	0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x14, 0x0a,
+	0x12, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65,
+	0x5f, 0x65, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65,
+	0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x17, 0x0a, 0x15,
+	0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x88,
+	0x01, 0x01, 0x12, 0x3f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x56, 0x65, 0x72, 0x73,
+	0x69, 0x6f, 0x6e, 0x1a, 0x65, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79,
+	0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74,
+	0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
+	0x65, 0x52, 0x0d, 0x72, 0x6f, 0x6f, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79,
+	0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63,
+	0x6f, 0x73, 0x74, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
+	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x64, 0x61, 0x74, 0x61,
+	0x73, 0x74, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_datastore_v3_proto_rawDescOnce sync.Once
+	file_datastore_v3_proto_rawDescData = file_datastore_v3_proto_rawDesc
+)
+
+func file_datastore_v3_proto_rawDescGZIP() []byte {
+	file_datastore_v3_proto_rawDescOnce.Do(func() {
+		file_datastore_v3_proto_rawDescData = protoimpl.X.CompressGZIP(file_datastore_v3_proto_rawDescData)
+	})
+	return file_datastore_v3_proto_rawDescData
+}
+
+var file_datastore_v3_proto_enumTypes = make([]protoimpl.EnumInfo, 12)
+var file_datastore_v3_proto_msgTypes = make([]protoimpl.MessageInfo, 55)
+var file_datastore_v3_proto_goTypes = []interface{}{
+	(Property_Meaning)(0),                        // 0: appengine.Property.Meaning
+	(Property_FtsTokenizationOption)(0),          // 1: appengine.Property.FtsTokenizationOption
+	(EntityProto_Kind)(0),                        // 2: appengine.EntityProto.Kind
+	(Index_PropertyType_Direction)(0),            // 3: appengine.Index.PropertyType.Direction
+	(CompositeIndex_State)(0),                    // 4: appengine.CompositeIndex.State
+	(Snapshot_Status)(0),                         // 5: appengine.Snapshot.Status
+	(Query_Hint)(0),                              // 6: appengine.Query.Hint
+	(Query_FilterType_Operator)(0),               // 7: appengine.Query.FilterType.Operator
+	(Query_OrderType_Direction)(0),               // 8: appengine.Query.OrderType.Direction
+	(Error_ErrorCode)(0),                         // 9: appengine.Error.ErrorCode
+	(PutRequest_AutoIdPolicy)(0),                 // 10: appengine.PutRequest.AutoIdPolicy
+	(BeginTransactionRequest_TransactionMode)(0), // 11: appengine.BeginTransactionRequest.TransactionMode
+	(*Action)(nil),                               // 12: appengine.Action
+	(*PropertyValue)(nil),                        // 13: appengine.PropertyValue
+	(*Property)(nil),                             // 14: appengine.Property
+	(*Path)(nil),                                 // 15: appengine.Path
+	(*Reference)(nil),                            // 16: appengine.Reference
+	(*User)(nil),                                 // 17: appengine.User
+	(*EntityProto)(nil),                          // 18: appengine.EntityProto
+	(*CompositeProperty)(nil),                    // 19: appengine.CompositeProperty
+	(*Index)(nil),                                // 20: appengine.Index
+	(*CompositeIndex)(nil),                       // 21: appengine.CompositeIndex
+	(*IndexPostfix)(nil),                         // 22: appengine.IndexPostfix
+	(*IndexPosition)(nil),                        // 23: appengine.IndexPosition
+	(*Snapshot)(nil),                             // 24: appengine.Snapshot
+	(*InternalHeader)(nil),                       // 25: appengine.InternalHeader
+	(*Transaction)(nil),                          // 26: appengine.Transaction
+	(*Query)(nil),                                // 27: appengine.Query
+	(*CompiledQuery)(nil),                        // 28: appengine.CompiledQuery
+	(*CompiledCursor)(nil),                       // 29: appengine.CompiledCursor
+	(*Cursor)(nil),                               // 30: appengine.Cursor
+	(*Error)(nil),                                // 31: appengine.Error
+	(*Cost)(nil),                                 // 32: appengine.Cost
+	(*GetRequest)(nil),                           // 33: appengine.GetRequest
+	(*GetResponse)(nil),                          // 34: appengine.GetResponse
+	(*PutRequest)(nil),                           // 35: appengine.PutRequest
+	(*PutResponse)(nil),                          // 36: appengine.PutResponse
+	(*TouchRequest)(nil),                         // 37: appengine.TouchRequest
+	(*TouchResponse)(nil),                        // 38: appengine.TouchResponse
+	(*DeleteRequest)(nil),                        // 39: appengine.DeleteRequest
+	(*DeleteResponse)(nil),                       // 40: appengine.DeleteResponse
+	(*NextRequest)(nil),                          // 41: appengine.NextRequest
+	(*QueryResult)(nil),                          // 42: appengine.QueryResult
+	(*AllocateIdsRequest)(nil),                   // 43: appengine.AllocateIdsRequest
+	(*AllocateIdsResponse)(nil),                  // 44: appengine.AllocateIdsResponse
+	(*CompositeIndices)(nil),                     // 45: appengine.CompositeIndices
+	(*AddActionsRequest)(nil),                    // 46: appengine.AddActionsRequest
+	(*AddActionsResponse)(nil),                   // 47: appengine.AddActionsResponse
+	(*BeginTransactionRequest)(nil),              // 48: appengine.BeginTransactionRequest
+	(*CommitResponse)(nil),                       // 49: appengine.CommitResponse
+	(*PropertyValue_PointValueType)(nil),         // 50: appengine.PropertyValue.PointValueType
+	(*PropertyValue_UserValueType)(nil),          // 51: appengine.PropertyValue.UserValueType
+	(*PropertyValue_ReferenceValueType)(nil),     // 52: appengine.PropertyValue.ReferenceValueType
+	(*PropertyValue_ReferenceValueType_PathElementType)(nil), // 53: appengine.PropertyValue.ReferenceValueType.PathElementType
+	(*Path_ElementType)(nil),                                 // 54: appengine.Path.ElementType
+	(*Index_PropertyType)(nil),                               // 55: appengine.Index.PropertyType
+	(*IndexPostfix_IndexValue)(nil),                          // 56: appengine.IndexPostfix.IndexValue
+	(*Query_FilterType)(nil),                                 // 57: appengine.Query.FilterType
+	(*Query_OrderType)(nil),                                  // 58: appengine.Query.OrderType
+	(*CompiledQuery_PrimaryScanType)(nil),                    // 59: appengine.CompiledQuery.PrimaryScanType
+	(*CompiledQuery_MergeJoinScanType)(nil),                  // 60: appengine.CompiledQuery.MergeJoinScanType
+	(*CompiledQuery_EntityFilterType)(nil),                   // 61: appengine.CompiledQuery.EntityFilterType
+	(*CompiledCursor_PositionType)(nil),                      // 62: appengine.CompiledCursor.PositionType
+	(*CompiledCursor_PositionType_IndexValueType)(nil),       // 63: appengine.CompiledCursor.PositionType.IndexValueType
+	(*Cost_CommitCostType)(nil),                              // 64: appengine.Cost.CommitCostType
+	(*GetResponse_EntityType)(nil),                           // 65: appengine.GetResponse.EntityType
+	(*CommitResponse_VersionType)(nil),                       // 66: appengine.CommitResponse.VersionType
+}
+var file_datastore_v3_proto_depIdxs = []int32{
+	50, // 0: appengine.PropertyValue.PointValue:type_name -> appengine.PropertyValue.PointValueType
+	51, // 1: appengine.PropertyValue.UserValue:type_name -> appengine.PropertyValue.UserValueType
+	52, // 2: appengine.PropertyValue.ReferenceValue:type_name -> appengine.PropertyValue.ReferenceValueType
+	0,  // 3: appengine.Property.meaning:type_name -> appengine.Property.Meaning
+	13, // 4: appengine.Property.value:type_name -> appengine.PropertyValue
+	1,  // 5: appengine.Property.fts_tokenization_option:type_name -> appengine.Property.FtsTokenizationOption
+	54, // 6: appengine.Path.Element:type_name -> appengine.Path.ElementType
+	15, // 7: appengine.Reference.path:type_name -> appengine.Path
+	16, // 8: appengine.EntityProto.key:type_name -> appengine.Reference
+	15, // 9: appengine.EntityProto.entity_group:type_name -> appengine.Path
+	17, // 10: appengine.EntityProto.owner:type_name -> appengine.User
+	2,  // 11: appengine.EntityProto.kind:type_name -> appengine.EntityProto.Kind
+	14, // 12: appengine.EntityProto.property:type_name -> appengine.Property
+	14, // 13: appengine.EntityProto.raw_property:type_name -> appengine.Property
+	55, // 14: appengine.Index.Property:type_name -> appengine.Index.PropertyType
+	20, // 15: appengine.CompositeIndex.definition:type_name -> appengine.Index
+	4,  // 16: appengine.CompositeIndex.state:type_name -> appengine.CompositeIndex.State
+	56, // 17: appengine.IndexPostfix.index_value:type_name -> appengine.IndexPostfix.IndexValue
+	16, // 18: appengine.IndexPostfix.key:type_name -> appengine.Reference
+	25, // 19: appengine.Transaction.header:type_name -> appengine.InternalHeader
+	25, // 20: appengine.Query.header:type_name -> appengine.InternalHeader
+	16, // 21: appengine.Query.ancestor:type_name -> appengine.Reference
+	57, // 22: appengine.Query.Filter:type_name -> appengine.Query.FilterType
+	58, // 23: appengine.Query.Order:type_name -> appengine.Query.OrderType
+	6,  // 24: appengine.Query.hint:type_name -> appengine.Query.Hint
+	29, // 25: appengine.Query.compiled_cursor:type_name -> appengine.CompiledCursor
+	29, // 26: appengine.Query.end_compiled_cursor:type_name -> appengine.CompiledCursor
+	21, // 27: appengine.Query.composite_index:type_name -> appengine.CompositeIndex
+	26, // 28: appengine.Query.transaction:type_name -> appengine.Transaction
+	59, // 29: appengine.CompiledQuery.PrimaryScan:type_name -> appengine.CompiledQuery.PrimaryScanType
+	60, // 30: appengine.CompiledQuery.MergeJoinScan:type_name -> appengine.CompiledQuery.MergeJoinScanType
+	20, // 31: appengine.CompiledQuery.index_def:type_name -> appengine.Index
+	61, // 32: appengine.CompiledQuery.EntityFilter:type_name -> appengine.CompiledQuery.EntityFilterType
+	62, // 33: appengine.CompiledCursor.Position:type_name -> appengine.CompiledCursor.PositionType
+	64, // 34: appengine.Cost.CommitCost:type_name -> appengine.Cost.CommitCostType
+	25, // 35: appengine.GetRequest.header:type_name -> appengine.InternalHeader
+	16, // 36: appengine.GetRequest.key:type_name -> appengine.Reference
+	26, // 37: appengine.GetRequest.transaction:type_name -> appengine.Transaction
+	65, // 38: appengine.GetResponse.Entity:type_name -> appengine.GetResponse.EntityType
+	16, // 39: appengine.GetResponse.deferred:type_name -> appengine.Reference
+	25, // 40: appengine.PutRequest.header:type_name -> appengine.InternalHeader
+	18, // 41: appengine.PutRequest.entity:type_name -> appengine.EntityProto
+	26, // 42: appengine.PutRequest.transaction:type_name -> appengine.Transaction
+	21, // 43: appengine.PutRequest.composite_index:type_name -> appengine.CompositeIndex
+	24, // 44: appengine.PutRequest.snapshot:type_name -> appengine.Snapshot
+	10, // 45: appengine.PutRequest.auto_id_policy:type_name -> appengine.PutRequest.AutoIdPolicy
+	16, // 46: appengine.PutResponse.key:type_name -> appengine.Reference
+	32, // 47: appengine.PutResponse.cost:type_name -> appengine.Cost
+	25, // 48: appengine.TouchRequest.header:type_name -> appengine.InternalHeader
+	16, // 49: appengine.TouchRequest.key:type_name -> appengine.Reference
+	21, // 50: appengine.TouchRequest.composite_index:type_name -> appengine.CompositeIndex
+	24, // 51: appengine.TouchRequest.snapshot:type_name -> appengine.Snapshot
+	32, // 52: appengine.TouchResponse.cost:type_name -> appengine.Cost
+	25, // 53: appengine.DeleteRequest.header:type_name -> appengine.InternalHeader
+	16, // 54: appengine.DeleteRequest.key:type_name -> appengine.Reference
+	26, // 55: appengine.DeleteRequest.transaction:type_name -> appengine.Transaction
+	24, // 56: appengine.DeleteRequest.snapshot:type_name -> appengine.Snapshot
+	32, // 57: appengine.DeleteResponse.cost:type_name -> appengine.Cost
+	25, // 58: appengine.NextRequest.header:type_name -> appengine.InternalHeader
+	30, // 59: appengine.NextRequest.cursor:type_name -> appengine.Cursor
+	30, // 60: appengine.QueryResult.cursor:type_name -> appengine.Cursor
+	18, // 61: appengine.QueryResult.result:type_name -> appengine.EntityProto
+	28, // 62: appengine.QueryResult.compiled_query:type_name -> appengine.CompiledQuery
+	29, // 63: appengine.QueryResult.compiled_cursor:type_name -> appengine.CompiledCursor
+	21, // 64: appengine.QueryResult.index:type_name -> appengine.CompositeIndex
+	25, // 65: appengine.AllocateIdsRequest.header:type_name -> appengine.InternalHeader
+	16, // 66: appengine.AllocateIdsRequest.model_key:type_name -> appengine.Reference
+	16, // 67: appengine.AllocateIdsRequest.reserve:type_name -> appengine.Reference
+	32, // 68: appengine.AllocateIdsResponse.cost:type_name -> appengine.Cost
+	21, // 69: appengine.CompositeIndices.index:type_name -> appengine.CompositeIndex
+	25, // 70: appengine.AddActionsRequest.header:type_name -> appengine.InternalHeader
+	26, // 71: appengine.AddActionsRequest.transaction:type_name -> appengine.Transaction
+	12, // 72: appengine.AddActionsRequest.action:type_name -> appengine.Action
+	25, // 73: appengine.BeginTransactionRequest.header:type_name -> appengine.InternalHeader
+	11, // 74: appengine.BeginTransactionRequest.mode:type_name -> appengine.BeginTransactionRequest.TransactionMode
+	26, // 75: appengine.BeginTransactionRequest.previous_transaction:type_name -> appengine.Transaction
+	32, // 76: appengine.CommitResponse.cost:type_name -> appengine.Cost
+	66, // 77: appengine.CommitResponse.Version:type_name -> appengine.CommitResponse.VersionType
+	53, // 78: appengine.PropertyValue.ReferenceValueType.PathElement:type_name -> appengine.PropertyValue.ReferenceValueType.PathElementType
+	3,  // 79: appengine.Index.PropertyType.direction:type_name -> appengine.Index.PropertyType.Direction
+	13, // 80: appengine.IndexPostfix.IndexValue.value:type_name -> appengine.PropertyValue
+	7,  // 81: appengine.Query.FilterType.op:type_name -> appengine.Query.FilterType.Operator
+	14, // 82: appengine.Query.FilterType.property:type_name -> appengine.Property
+	8,  // 83: appengine.Query.OrderType.direction:type_name -> appengine.Query.OrderType.Direction
+	16, // 84: appengine.CompiledQuery.EntityFilterType.ancestor:type_name -> appengine.Reference
+	63, // 85: appengine.CompiledCursor.PositionType.IndexValue:type_name -> appengine.CompiledCursor.PositionType.IndexValueType
+	16, // 86: appengine.CompiledCursor.PositionType.key:type_name -> appengine.Reference
+	13, // 87: appengine.CompiledCursor.PositionType.IndexValueType.value:type_name -> appengine.PropertyValue
+	18, // 88: appengine.GetResponse.EntityType.entity:type_name -> appengine.EntityProto
+	16, // 89: appengine.GetResponse.EntityType.key:type_name -> appengine.Reference
+	16, // 90: appengine.CommitResponse.VersionType.root_entity_key:type_name -> appengine.Reference
+	91, // [91:91] is the sub-list for method output_type
+	91, // [91:91] is the sub-list for method input_type
+	91, // [91:91] is the sub-list for extension type_name
+	91, // [91:91] is the sub-list for extension extendee
+	0,  // [0:91] is the sub-list for field type_name
+}
+
+func init() { file_datastore_v3_proto_init() }
+func file_datastore_v3_proto_init() {
+	if File_datastore_v3_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_datastore_v3_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Action); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PropertyValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Property); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Path); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[4].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_datastore_v3_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*User); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EntityProto); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompositeProperty); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Index); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompositeIndex); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IndexPostfix); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IndexPosition); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Snapshot); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*InternalHeader); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Transaction); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Query); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompiledQuery); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompiledCursor); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Cursor); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Error); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Cost); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PutRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PutResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TouchRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TouchResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*NextRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*QueryResult); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AllocateIdsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AllocateIdsResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompositeIndices); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AddActionsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AddActionsResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BeginTransactionRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CommitResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PropertyValue_PointValueType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PropertyValue_UserValueType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PropertyValue_ReferenceValueType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PropertyValue_ReferenceValueType_PathElementType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Path_ElementType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Index_PropertyType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IndexPostfix_IndexValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Query_FilterType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Query_OrderType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompiledQuery_PrimaryScanType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompiledQuery_MergeJoinScanType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompiledQuery_EntityFilterType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompiledCursor_PositionType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompiledCursor_PositionType_IndexValueType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Cost_CommitCostType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetResponse_EntityType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_datastore_v3_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CommitResponse_VersionType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_datastore_v3_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[4].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[5].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[6].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[9].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[10].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[11].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[13].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[14].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[15].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[16].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[17].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[18].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[20].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[21].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[22].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[23].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[24].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[25].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[26].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[27].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[28].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[29].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[30].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[31].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[32].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[34].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[36].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[37].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[39].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[40].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[41].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[42].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[43].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[46].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[47].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[48].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[49].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[50].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[51].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[52].OneofWrappers = []interface{}{}
+	file_datastore_v3_proto_msgTypes[53].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_datastore_v3_proto_rawDesc,
+			NumEnums:      12,
+			NumMessages:   55,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_datastore_v3_proto_goTypes,
+		DependencyIndexes: file_datastore_v3_proto_depIdxs,
+		EnumInfos:         file_datastore_v3_proto_enumTypes,
+		MessageInfos:      file_datastore_v3_proto_msgTypes,
+	}.Build()
+	File_datastore_v3_proto = out.File
+	file_datastore_v3_proto_rawDesc = nil
+	file_datastore_v3_proto_goTypes = nil
+	file_datastore_v3_proto_depIdxs = nil
 }
diff --git a/internal/datastore/datastore_v3.proto b/internal/datastore/datastore_v3.proto
index 497b4d9a..b87384df 100755
--- a/internal/datastore/datastore_v3.proto
+++ b/internal/datastore/datastore_v3.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "datastore";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/datastore";
 
 package appengine;
 
@@ -11,28 +11,33 @@ message PropertyValue {
   optional string stringValue = 3;
   optional double doubleValue = 4;
 
-  optional group PointValue = 5 {
-    required double x = 6;
-    required double y = 7;
+  message PointValueType {
+    double x = 1;
+    double y = 2;
   }
 
-  optional group UserValue = 8 {
-    required string email = 9;
-    required string auth_domain = 10;
+  optional PointValueType PointValue = 5;
+
+  message UserValueType {
+    string email = 9;
+    string auth_domain = 10;
     optional string nickname = 11;
     optional string federated_identity = 21;
     optional string federated_provider = 22;
   }
+  optional UserValueType UserValue = 8;
 
-  optional group ReferenceValue = 12 {
-    required string app = 13;
+  message ReferenceValueType {
+    string app = 13;
     optional string name_space = 20;
-    repeated group PathElement = 14 {
-      required string type = 15;
+    message PathElementType {
+      string type = 15;
       optional int64 id = 16;
       optional string name = 17;
     }
+    repeated PathElementType PathElement = 14;
   }
+  optional ReferenceValueType ReferenceValue = 12;
 }
 
 message Property {
@@ -65,55 +70,58 @@ message Property {
     INDEX_VALUE = 18;
   };
 
-  optional Meaning meaning = 1 [default = NO_MEANING];
+  optional Meaning meaning = 1;
   optional string meaning_uri = 2;
 
-  required string name = 3;
+  string name = 3;
 
-  required PropertyValue value = 5;
+  PropertyValue value = 5;
 
-  required bool multiple = 4;
+  bool multiple = 4;
 
-  optional bool searchable = 6 [default=false];
+  optional bool searchable = 6;
 
   enum FtsTokenizationOption {
+    NONE = 0;
     HTML = 1;
     ATOM = 2;
   }
 
   optional FtsTokenizationOption fts_tokenization_option = 8;
 
-  optional string locale = 9 [default = "en"];
+  optional string locale = 9;
 }
 
 message Path {
-  repeated group Element = 1 {
-    required string type = 2;
+  message ElementType {
+    string type = 2;
     optional int64 id = 3;
     optional string name = 4;
   }
+  repeated ElementType Element = 1;
 }
 
 message Reference {
-  required string app = 13;
+  string app = 13;
   optional string name_space = 20;
-  required Path path = 14;
+  Path path = 14;
 }
 
 message User {
-  required string email = 1;
-  required string auth_domain = 2;
+  string email = 1;
+  string auth_domain = 2;
   optional string nickname = 3;
   optional string federated_identity = 6;
   optional string federated_provider = 7;
 }
 
 message EntityProto {
-  required Reference key = 13;
-  required Path entity_group = 16;
+  Reference key = 13;
+  Path entity_group = 16;
   optional User owner = 17;
 
   enum Kind {
+    NONE = 0;
     GD_CONTACT = 1;
     GD_EVENT = 2;
     GD_MESSAGE = 3;
@@ -128,56 +136,59 @@ message EntityProto {
 }
 
 message CompositeProperty {
-  required int64 index_id = 1;
+  int64 index_id = 1;
   repeated string value = 2;
 }
 
 message Index {
-  required string entity_type = 1;
-  required bool ancestor = 5;
-  repeated group Property = 2 {
-    required string name = 3;
+  string entity_type = 1;
+  bool ancestor = 5;
+  message PropertyType {
+    string name = 3;
     enum Direction {
+      NONE = 0;
       ASCENDING = 1;
       DESCENDING = 2;
     }
-    optional Direction direction = 4 [default = ASCENDING];
+    optional Direction direction = 4;
   }
+  repeated PropertyType Property = 2;
 }
 
 message CompositeIndex {
-  required string app_id = 1;
-  required int64 id = 2;
-  required Index definition = 3;
+  string app_id = 1;
+  int64 id = 2;
+  Index definition = 3;
 
   enum State {
+    NONE = 0;
     WRITE_ONLY = 1;
     READ_WRITE = 2;
     DELETED = 3;
     ERROR = 4;
   }
-  required State state = 4;
+  State state = 4;
 
-  optional bool only_use_if_required = 6 [default = false];
+  optional bool only_use_if_required = 6;
 }
 
 message IndexPostfix {
   message IndexValue {
-    required string property_name = 1;
-    required PropertyValue value = 2;
+    string property_name = 1;
+    PropertyValue value = 2;
   }
 
   repeated IndexValue index_value = 1;
 
   optional Reference key = 2;
 
-  optional bool before = 3 [default=true];
+  optional bool before = 3;
 }
 
 message IndexPosition {
   optional string key = 1;
 
-  optional bool before = 2 [default=true];
+  optional bool before = 2;
 }
 
 message Snapshot {
@@ -186,7 +197,7 @@ message Snapshot {
     ACTIVE = 1;
   }
 
-  required int64 ts = 1;
+  int64 ts = 1;
 }
 
 message InternalHeader {
@@ -195,22 +206,23 @@ message InternalHeader {
 
 message Transaction {
   optional InternalHeader header = 4;
-  required fixed64 handle = 1;
-  required string app = 2;
-  optional bool mark_changes = 3 [default = false];
+  fixed64 handle = 1;
+  string app = 2;
+  optional bool mark_changes = 3;
 }
 
 message Query {
   optional InternalHeader header = 39;
 
-  required string app = 1;
+  string app = 1;
   optional string name_space = 29;
 
   optional string kind = 3;
   optional Reference ancestor = 17;
 
-  repeated group Filter = 4 {
+  message FilterType {
     enum Operator {
+      NONE = 0;
       LESS_THAN = 1;
       LESS_THAN_OR_EQUAL = 2;
       GREATER_THAN = 3;
@@ -220,23 +232,27 @@ message Query {
       EXISTS = 7;
     }
 
-    required Operator op = 6;
+    Operator op = 6;
     repeated Property property = 14;
   }
+  repeated FilterType Filter = 4;
 
   optional string search_query = 8;
 
-  repeated group Order = 9 {
+  repeated OrderType Order = 9;
+  message OrderType  {
     enum Direction {
+      NONE = 0;
       ASCENDING = 1;
       DESCENDING = 2;
     }
 
-    required string property = 10;
-    optional Direction direction = 11 [default = ASCENDING];
+    string property = 10;
+    optional Direction direction = 11;
   }
 
   enum Hint {
+    NONE = 0;
     ORDER_FIRST = 1;
     ANCESTOR_FIRST = 2;
     FILTER_FIRST = 3;
@@ -245,7 +261,7 @@ message Query {
 
   optional int32 count = 23;
 
-  optional int32 offset = 12 [default = 0];
+  optional int32 offset = 12;
 
   optional int32 limit = 16;
 
@@ -254,13 +270,13 @@ message Query {
 
   repeated CompositeIndex composite_index = 19;
 
-  optional bool require_perfect_plan = 20 [default = false];
+  optional bool require_perfect_plan = 20;
 
-  optional bool keys_only = 21 [default = false];
+  optional bool keys_only = 21;
 
   optional Transaction transaction = 22;
 
-  optional bool compile = 25 [default = false];
+  optional bool compile = 25;
 
   optional int64 failover_ms = 26;
 
@@ -276,11 +292,11 @@ message Query {
 
   repeated string safe_replica_name = 36;
 
-  optional bool persist_offset = 37 [default=false];
+  optional bool persist_offset = 37;
 }
 
 message CompiledQuery {
-  required group PrimaryScan = 1 {
+  message PrimaryScanType {
     optional string index_name = 2;
 
     optional string start_key = 3;
@@ -293,58 +309,64 @@ message CompiledQuery {
 
     optional int64 end_unapplied_log_timestamp_us = 19;
   }
+  PrimaryScanType PrimaryScan = 1;
 
-  repeated group MergeJoinScan = 7 {
-    required string index_name = 8;
+  message MergeJoinScanType{
+    string index_name = 8;
 
     repeated string prefix_value = 9;
 
-    optional bool value_prefix = 20 [default=false];
+    optional bool value_prefix = 20;
   }
+  repeated MergeJoinScanType MergeJoinScan = 7;
 
   optional Index index_def = 21;
 
-  optional int32 offset = 10 [default = 0];
+  optional int32 offset = 10;
 
   optional int32 limit = 11;
 
-  required bool keys_only = 12;
+  bool keys_only = 12;
 
   repeated string property_name = 24;
 
   optional int32 distinct_infix_size = 25;
 
-  optional group EntityFilter = 13 {
-    optional bool distinct = 14 [default=false];
+  message EntityFilterType {
+    optional bool distinct = 14;
 
     optional string kind = 17;
     optional Reference ancestor = 18;
   }
+  optional EntityFilterType EntityFilter = 13;
 }
 
 message CompiledCursor {
-  optional group Position = 2 {
+  message PositionType {
     optional string start_key = 27;
 
-    repeated group IndexValue = 29 {
+    message IndexValueType {
       optional string property = 30;
-      required PropertyValue value = 31;
+      PropertyValue value = 31;
     }
+    repeated IndexValueType IndexValue = 29;
 
     optional Reference key = 32;
 
-    optional bool start_inclusive = 28 [default=true];
+    optional bool start_inclusive = 28;
   }
+  optional PositionType Position = 2;
 }
 
 message Cursor {
-  required fixed64 cursor = 1;
+  fixed64 cursor = 1;
 
   optional string app = 2;
 }
 
 message Error {
   enum ErrorCode {
+    NONE = 0;
     BAD_REQUEST = 1;
     CONCURRENT_TRANSACTION = 2;
     INTERNAL_ERROR = 3;
@@ -364,10 +386,11 @@ message Cost {
   optional int32 index_write_bytes = 2;
   optional int32 entity_writes = 3;
   optional int32 entity_write_bytes = 4;
-  optional group CommitCost = 5 {
+  message CommitCostType {
     optional int32 requested_entity_puts = 6;
     optional int32 requested_entity_deletes = 7;
   };
+  optional CommitCostType CommitCost = 5;
   optional int32 approximate_storage_delta = 8;
   optional int32 id_sequence_updates = 9;
 }
@@ -382,20 +405,21 @@ message GetRequest {
 
   optional bool strong = 4;
 
-  optional bool allow_deferred = 5 [default=false];
+  optional bool allow_deferred = 5;
 }
 
 message GetResponse {
-  repeated group Entity = 1 {
+  message EntityType {
     optional EntityProto entity = 2;
     optional Reference key = 4;
 
     optional int64 version = 3;
   }
+  repeated EntityType Entity = 1;
 
   repeated Reference deferred = 5;
 
-  optional bool in_order = 6 [default=true];
+  optional bool in_order = 6;
 }
 
 message PutRequest {
@@ -405,18 +429,18 @@ message PutRequest {
   optional Transaction transaction = 2;
   repeated CompositeIndex composite_index = 3;
 
-  optional bool trusted = 4 [default = false];
+  optional bool trusted = 4;
 
-  optional bool force = 7 [default = false];
+  optional bool force = 7;
 
-  optional bool mark_changes = 8 [default = false];
+  optional bool mark_changes = 8;
   repeated Snapshot snapshot = 9;
 
   enum AutoIdPolicy {
     CURRENT = 0;
     SEQUENTIAL = 1;
   }
-  optional AutoIdPolicy auto_id_policy = 10 [default = CURRENT];
+  optional AutoIdPolicy auto_id_policy = 10;
 }
 
 message PutResponse {
@@ -430,7 +454,7 @@ message TouchRequest {
 
   repeated Reference key = 1;
   repeated CompositeIndex composite_index = 2;
-  optional bool force = 3 [default = false];
+  optional bool force = 3;
   repeated Snapshot snapshot = 9;
 }
 
@@ -444,11 +468,11 @@ message DeleteRequest {
   repeated Reference key = 6;
   optional Transaction transaction = 5;
 
-  optional bool trusted = 4 [default = false];
+  optional bool trusted = 4;
 
-  optional bool force = 7 [default = false];
+  optional bool force = 7;
 
-  optional bool mark_changes = 8 [default = false];
+  optional bool mark_changes = 8;
   repeated Snapshot snapshot = 9;
 }
 
@@ -460,12 +484,12 @@ message DeleteResponse {
 message NextRequest {
   optional InternalHeader header = 5;
 
-  required Cursor cursor = 1;
+  Cursor cursor = 1;
   optional int32 count = 2;
 
-  optional int32 offset = 4 [default = 0];
+  optional int32 offset = 4;
 
-  optional bool compile = 3 [default = false];
+  optional bool compile = 3;
 }
 
 message QueryResult {
@@ -475,7 +499,7 @@ message QueryResult {
 
   optional int32 skipped_results = 7;
 
-  required bool more_results = 3;
+  bool more_results = 3;
 
   optional bool keys_only = 4;
 
@@ -505,8 +529,8 @@ message AllocateIdsRequest {
 }
 
 message AllocateIdsResponse {
-  required int64 start = 1;
-  required int64 end = 2;
+  int64 start = 1;
+  int64 end = 2;
   optional Cost cost = 3;
 }
 
@@ -517,7 +541,7 @@ message CompositeIndices {
 message AddActionsRequest {
   optional InternalHeader header = 3;
 
-  required Transaction transaction = 1;
+  Transaction transaction = 1;
   repeated Action action = 2;
 }
 
@@ -527,8 +551,8 @@ message AddActionsResponse {
 message BeginTransactionRequest {
   optional InternalHeader header = 3;
 
-  required string app = 1;
-  optional bool allow_multiple_eg = 2 [default = false];
+  string app = 1;
+  optional bool allow_multiple_eg = 2;
   optional string database_id = 4;
 
   enum TransactionMode {
@@ -536,7 +560,7 @@ message BeginTransactionRequest {
     READ_ONLY = 1;
     READ_WRITE = 2;
   }
-  optional TransactionMode mode = 5 [default = UNKNOWN];
+  optional TransactionMode mode = 5;
 
   optional Transaction previous_transaction = 7;
 }
@@ -544,8 +568,9 @@ message BeginTransactionRequest {
 message CommitResponse {
   optional Cost cost = 1;
 
-  repeated group Version = 3 {
-    required Reference root_entity_key = 4;
-    required int64 version = 5;
+  message VersionType  {
+    Reference root_entity_key = 4;
+    int64 version = 5;
   }
+  repeated VersionType Version = 3;
 }
diff --git a/internal/image/images_service.pb.go b/internal/image/images_service.pb.go
index 2a229d87..a239001b 100644
--- a/internal/image/images_service.pb.go
+++ b/internal/image/images_service.pb.go
@@ -1,26 +1,29 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/image/images_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: images_service.proto
 
 package image
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 ImagesServiceError_ErrorCode int32
 
 const (
+	ImagesServiceError_NONE               ImagesServiceError_ErrorCode = 0
 	ImagesServiceError_UNSPECIFIED_ERROR  ImagesServiceError_ErrorCode = 1
 	ImagesServiceError_BAD_TRANSFORM_DATA ImagesServiceError_ErrorCode = 2
 	ImagesServiceError_NOT_IMAGE          ImagesServiceError_ErrorCode = 3
@@ -31,50 +34,63 @@ const (
 	ImagesServiceError_OBJECT_NOT_FOUND   ImagesServiceError_ErrorCode = 8
 )
 
-var ImagesServiceError_ErrorCode_name = map[int32]string{
-	1: "UNSPECIFIED_ERROR",
-	2: "BAD_TRANSFORM_DATA",
-	3: "NOT_IMAGE",
-	4: "BAD_IMAGE_DATA",
-	5: "IMAGE_TOO_LARGE",
-	6: "INVALID_BLOB_KEY",
-	7: "ACCESS_DENIED",
-	8: "OBJECT_NOT_FOUND",
-}
-var ImagesServiceError_ErrorCode_value = map[string]int32{
-	"UNSPECIFIED_ERROR":  1,
-	"BAD_TRANSFORM_DATA": 2,
-	"NOT_IMAGE":          3,
-	"BAD_IMAGE_DATA":     4,
-	"IMAGE_TOO_LARGE":    5,
-	"INVALID_BLOB_KEY":   6,
-	"ACCESS_DENIED":      7,
-	"OBJECT_NOT_FOUND":   8,
-}
+// Enum value maps for ImagesServiceError_ErrorCode.
+var (
+	ImagesServiceError_ErrorCode_name = map[int32]string{
+		0: "NONE",
+		1: "UNSPECIFIED_ERROR",
+		2: "BAD_TRANSFORM_DATA",
+		3: "NOT_IMAGE",
+		4: "BAD_IMAGE_DATA",
+		5: "IMAGE_TOO_LARGE",
+		6: "INVALID_BLOB_KEY",
+		7: "ACCESS_DENIED",
+		8: "OBJECT_NOT_FOUND",
+	}
+	ImagesServiceError_ErrorCode_value = map[string]int32{
+		"NONE":               0,
+		"UNSPECIFIED_ERROR":  1,
+		"BAD_TRANSFORM_DATA": 2,
+		"NOT_IMAGE":          3,
+		"BAD_IMAGE_DATA":     4,
+		"IMAGE_TOO_LARGE":    5,
+		"INVALID_BLOB_KEY":   6,
+		"ACCESS_DENIED":      7,
+		"OBJECT_NOT_FOUND":   8,
+	}
+)
 
 func (x ImagesServiceError_ErrorCode) Enum() *ImagesServiceError_ErrorCode {
 	p := new(ImagesServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x ImagesServiceError_ErrorCode) String() string {
-	return proto.EnumName(ImagesServiceError_ErrorCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *ImagesServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(ImagesServiceError_ErrorCode_value, data, "ImagesServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = ImagesServiceError_ErrorCode(value)
-	return nil
+
+func (ImagesServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_images_service_proto_enumTypes[0].Descriptor()
+}
+
+func (ImagesServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_images_service_proto_enumTypes[0]
+}
+
+func (x ImagesServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use ImagesServiceError_ErrorCode.Descriptor instead.
 func (ImagesServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{0, 0}
+	return file_images_service_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type ImagesServiceTransform_Type int32
 
 const (
+	ImagesServiceTransform_NONE             ImagesServiceTransform_Type = 0
 	ImagesServiceTransform_RESIZE           ImagesServiceTransform_Type = 1
 	ImagesServiceTransform_ROTATE           ImagesServiceTransform_Type = 2
 	ImagesServiceTransform_HORIZONTAL_FLIP  ImagesServiceTransform_Type = 3
@@ -83,41 +99,53 @@ const (
 	ImagesServiceTransform_IM_FEELING_LUCKY ImagesServiceTransform_Type = 6
 )
 
-var ImagesServiceTransform_Type_name = map[int32]string{
-	1: "RESIZE",
-	2: "ROTATE",
-	3: "HORIZONTAL_FLIP",
-	4: "VERTICAL_FLIP",
-	5: "CROP",
-	6: "IM_FEELING_LUCKY",
-}
-var ImagesServiceTransform_Type_value = map[string]int32{
-	"RESIZE":           1,
-	"ROTATE":           2,
-	"HORIZONTAL_FLIP":  3,
-	"VERTICAL_FLIP":    4,
-	"CROP":             5,
-	"IM_FEELING_LUCKY": 6,
-}
+// Enum value maps for ImagesServiceTransform_Type.
+var (
+	ImagesServiceTransform_Type_name = map[int32]string{
+		0: "NONE",
+		1: "RESIZE",
+		2: "ROTATE",
+		3: "HORIZONTAL_FLIP",
+		4: "VERTICAL_FLIP",
+		5: "CROP",
+		6: "IM_FEELING_LUCKY",
+	}
+	ImagesServiceTransform_Type_value = map[string]int32{
+		"NONE":             0,
+		"RESIZE":           1,
+		"ROTATE":           2,
+		"HORIZONTAL_FLIP":  3,
+		"VERTICAL_FLIP":    4,
+		"CROP":             5,
+		"IM_FEELING_LUCKY": 6,
+	}
+)
 
 func (x ImagesServiceTransform_Type) Enum() *ImagesServiceTransform_Type {
 	p := new(ImagesServiceTransform_Type)
 	*p = x
 	return p
 }
+
 func (x ImagesServiceTransform_Type) String() string {
-	return proto.EnumName(ImagesServiceTransform_Type_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *ImagesServiceTransform_Type) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(ImagesServiceTransform_Type_value, data, "ImagesServiceTransform_Type")
-	if err != nil {
-		return err
-	}
-	*x = ImagesServiceTransform_Type(value)
-	return nil
+
+func (ImagesServiceTransform_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_images_service_proto_enumTypes[1].Descriptor()
+}
+
+func (ImagesServiceTransform_Type) Type() protoreflect.EnumType {
+	return &file_images_service_proto_enumTypes[1]
+}
+
+func (x ImagesServiceTransform_Type) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use ImagesServiceTransform_Type.Descriptor instead.
 func (ImagesServiceTransform_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{1, 0}
+	return file_images_service_proto_rawDescGZIP(), []int{1, 0}
 }
 
 type InputSettings_ORIENTATION_CORRECTION_TYPE int32
@@ -127,33 +155,43 @@ const (
 	InputSettings_CORRECT_ORIENTATION   InputSettings_ORIENTATION_CORRECTION_TYPE = 1
 )
 
-var InputSettings_ORIENTATION_CORRECTION_TYPE_name = map[int32]string{
-	0: "UNCHANGED_ORIENTATION",
-	1: "CORRECT_ORIENTATION",
-}
-var InputSettings_ORIENTATION_CORRECTION_TYPE_value = map[string]int32{
-	"UNCHANGED_ORIENTATION": 0,
-	"CORRECT_ORIENTATION":   1,
-}
+// Enum value maps for InputSettings_ORIENTATION_CORRECTION_TYPE.
+var (
+	InputSettings_ORIENTATION_CORRECTION_TYPE_name = map[int32]string{
+		0: "UNCHANGED_ORIENTATION",
+		1: "CORRECT_ORIENTATION",
+	}
+	InputSettings_ORIENTATION_CORRECTION_TYPE_value = map[string]int32{
+		"UNCHANGED_ORIENTATION": 0,
+		"CORRECT_ORIENTATION":   1,
+	}
+)
 
 func (x InputSettings_ORIENTATION_CORRECTION_TYPE) Enum() *InputSettings_ORIENTATION_CORRECTION_TYPE {
 	p := new(InputSettings_ORIENTATION_CORRECTION_TYPE)
 	*p = x
 	return p
 }
+
 func (x InputSettings_ORIENTATION_CORRECTION_TYPE) String() string {
-	return proto.EnumName(InputSettings_ORIENTATION_CORRECTION_TYPE_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *InputSettings_ORIENTATION_CORRECTION_TYPE) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(InputSettings_ORIENTATION_CORRECTION_TYPE_value, data, "InputSettings_ORIENTATION_CORRECTION_TYPE")
-	if err != nil {
-		return err
-	}
-	*x = InputSettings_ORIENTATION_CORRECTION_TYPE(value)
-	return nil
+
+func (InputSettings_ORIENTATION_CORRECTION_TYPE) Descriptor() protoreflect.EnumDescriptor {
+	return file_images_service_proto_enumTypes[2].Descriptor()
+}
+
+func (InputSettings_ORIENTATION_CORRECTION_TYPE) Type() protoreflect.EnumType {
+	return &file_images_service_proto_enumTypes[2]
+}
+
+func (x InputSettings_ORIENTATION_CORRECTION_TYPE) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use InputSettings_ORIENTATION_CORRECTION_TYPE.Descriptor instead.
 func (InputSettings_ORIENTATION_CORRECTION_TYPE) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{4, 0}
+	return file_images_service_proto_rawDescGZIP(), []int{4, 0}
 }
 
 type OutputSettings_MIME_TYPE int32
@@ -164,35 +202,45 @@ const (
 	OutputSettings_WEBP OutputSettings_MIME_TYPE = 2
 )
 
-var OutputSettings_MIME_TYPE_name = map[int32]string{
-	0: "PNG",
-	1: "JPEG",
-	2: "WEBP",
-}
-var OutputSettings_MIME_TYPE_value = map[string]int32{
-	"PNG":  0,
-	"JPEG": 1,
-	"WEBP": 2,
-}
+// Enum value maps for OutputSettings_MIME_TYPE.
+var (
+	OutputSettings_MIME_TYPE_name = map[int32]string{
+		0: "PNG",
+		1: "JPEG",
+		2: "WEBP",
+	}
+	OutputSettings_MIME_TYPE_value = map[string]int32{
+		"PNG":  0,
+		"JPEG": 1,
+		"WEBP": 2,
+	}
+)
 
 func (x OutputSettings_MIME_TYPE) Enum() *OutputSettings_MIME_TYPE {
 	p := new(OutputSettings_MIME_TYPE)
 	*p = x
 	return p
 }
+
 func (x OutputSettings_MIME_TYPE) String() string {
-	return proto.EnumName(OutputSettings_MIME_TYPE_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *OutputSettings_MIME_TYPE) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(OutputSettings_MIME_TYPE_value, data, "OutputSettings_MIME_TYPE")
-	if err != nil {
-		return err
-	}
-	*x = OutputSettings_MIME_TYPE(value)
-	return nil
+
+func (OutputSettings_MIME_TYPE) Descriptor() protoreflect.EnumDescriptor {
+	return file_images_service_proto_enumTypes[3].Descriptor()
+}
+
+func (OutputSettings_MIME_TYPE) Type() protoreflect.EnumType {
+	return &file_images_service_proto_enumTypes[3]
+}
+
+func (x OutputSettings_MIME_TYPE) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use OutputSettings_MIME_TYPE.Descriptor instead.
 func (OutputSettings_MIME_TYPE) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{5, 0}
+	return file_images_service_proto_rawDescGZIP(), []int{5, 0}
 }
 
 type CompositeImageOptions_ANCHOR int32
@@ -209,1167 +257,1757 @@ const (
 	CompositeImageOptions_BOTTOM_RIGHT CompositeImageOptions_ANCHOR = 8
 )
 
-var CompositeImageOptions_ANCHOR_name = map[int32]string{
-	0: "TOP_LEFT",
-	1: "TOP",
-	2: "TOP_RIGHT",
-	3: "LEFT",
-	4: "CENTER",
-	5: "RIGHT",
-	6: "BOTTOM_LEFT",
-	7: "BOTTOM",
-	8: "BOTTOM_RIGHT",
-}
-var CompositeImageOptions_ANCHOR_value = map[string]int32{
-	"TOP_LEFT":     0,
-	"TOP":          1,
-	"TOP_RIGHT":    2,
-	"LEFT":         3,
-	"CENTER":       4,
-	"RIGHT":        5,
-	"BOTTOM_LEFT":  6,
-	"BOTTOM":       7,
-	"BOTTOM_RIGHT": 8,
-}
+// Enum value maps for CompositeImageOptions_ANCHOR.
+var (
+	CompositeImageOptions_ANCHOR_name = map[int32]string{
+		0: "TOP_LEFT",
+		1: "TOP",
+		2: "TOP_RIGHT",
+		3: "LEFT",
+		4: "CENTER",
+		5: "RIGHT",
+		6: "BOTTOM_LEFT",
+		7: "BOTTOM",
+		8: "BOTTOM_RIGHT",
+	}
+	CompositeImageOptions_ANCHOR_value = map[string]int32{
+		"TOP_LEFT":     0,
+		"TOP":          1,
+		"TOP_RIGHT":    2,
+		"LEFT":         3,
+		"CENTER":       4,
+		"RIGHT":        5,
+		"BOTTOM_LEFT":  6,
+		"BOTTOM":       7,
+		"BOTTOM_RIGHT": 8,
+	}
+)
 
 func (x CompositeImageOptions_ANCHOR) Enum() *CompositeImageOptions_ANCHOR {
 	p := new(CompositeImageOptions_ANCHOR)
 	*p = x
 	return p
 }
+
 func (x CompositeImageOptions_ANCHOR) String() string {
-	return proto.EnumName(CompositeImageOptions_ANCHOR_name, int32(x))
-}
-func (x *CompositeImageOptions_ANCHOR) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(CompositeImageOptions_ANCHOR_value, data, "CompositeImageOptions_ANCHOR")
-	if err != nil {
-		return err
-	}
-	*x = CompositeImageOptions_ANCHOR(value)
-	return nil
-}
-func (CompositeImageOptions_ANCHOR) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{8, 0}
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type ImagesServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (CompositeImageOptions_ANCHOR) Descriptor() protoreflect.EnumDescriptor {
+	return file_images_service_proto_enumTypes[4].Descriptor()
 }
 
-func (m *ImagesServiceError) Reset()         { *m = ImagesServiceError{} }
-func (m *ImagesServiceError) String() string { return proto.CompactTextString(m) }
-func (*ImagesServiceError) ProtoMessage()    {}
-func (*ImagesServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{0}
+func (CompositeImageOptions_ANCHOR) Type() protoreflect.EnumType {
+	return &file_images_service_proto_enumTypes[4]
 }
-func (m *ImagesServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesServiceError.Unmarshal(m, b)
+
+func (x CompositeImageOptions_ANCHOR) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *ImagesServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesServiceError.Marshal(b, m, deterministic)
+
+// Deprecated: Use CompositeImageOptions_ANCHOR.Descriptor instead.
+func (CompositeImageOptions_ANCHOR) EnumDescriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{8, 0}
 }
-func (dst *ImagesServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesServiceError.Merge(dst, src)
+
+type ImagesServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *ImagesServiceError) XXX_Size() int {
-	return xxx_messageInfo_ImagesServiceError.Size(m)
+
+func (x *ImagesServiceError) Reset() {
+	*x = ImagesServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesServiceError.DiscardUnknown(m)
+
+func (x *ImagesServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ImagesServiceError proto.InternalMessageInfo
+func (*ImagesServiceError) ProtoMessage() {}
 
-type ImagesServiceTransform struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *ImagesServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-func (m *ImagesServiceTransform) Reset()         { *m = ImagesServiceTransform{} }
-func (m *ImagesServiceTransform) String() string { return proto.CompactTextString(m) }
-func (*ImagesServiceTransform) ProtoMessage()    {}
-func (*ImagesServiceTransform) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{1}
-}
-func (m *ImagesServiceTransform) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesServiceTransform.Unmarshal(m, b)
-}
-func (m *ImagesServiceTransform) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesServiceTransform.Marshal(b, m, deterministic)
+// Deprecated: Use ImagesServiceError.ProtoReflect.Descriptor instead.
+func (*ImagesServiceError) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{0}
 }
-func (dst *ImagesServiceTransform) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesServiceTransform.Merge(dst, src)
+
+type ImagesServiceTransform struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *ImagesServiceTransform) XXX_Size() int {
-	return xxx_messageInfo_ImagesServiceTransform.Size(m)
+
+func (x *ImagesServiceTransform) Reset() {
+	*x = ImagesServiceTransform{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesServiceTransform) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesServiceTransform.DiscardUnknown(m)
+
+func (x *ImagesServiceTransform) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ImagesServiceTransform proto.InternalMessageInfo
+func (*ImagesServiceTransform) ProtoMessage() {}
 
-type Transform struct {
-	Width                *int32   `protobuf:"varint,1,opt,name=width" json:"width,omitempty"`
-	Height               *int32   `protobuf:"varint,2,opt,name=height" json:"height,omitempty"`
-	CropToFit            *bool    `protobuf:"varint,11,opt,name=crop_to_fit,json=cropToFit,def=0" json:"crop_to_fit,omitempty"`
-	CropOffsetX          *float32 `protobuf:"fixed32,12,opt,name=crop_offset_x,json=cropOffsetX,def=0.5" json:"crop_offset_x,omitempty"`
-	CropOffsetY          *float32 `protobuf:"fixed32,13,opt,name=crop_offset_y,json=cropOffsetY,def=0.5" json:"crop_offset_y,omitempty"`
-	Rotate               *int32   `protobuf:"varint,3,opt,name=rotate,def=0" json:"rotate,omitempty"`
-	HorizontalFlip       *bool    `protobuf:"varint,4,opt,name=horizontal_flip,json=horizontalFlip,def=0" json:"horizontal_flip,omitempty"`
-	VerticalFlip         *bool    `protobuf:"varint,5,opt,name=vertical_flip,json=verticalFlip,def=0" json:"vertical_flip,omitempty"`
-	CropLeftX            *float32 `protobuf:"fixed32,6,opt,name=crop_left_x,json=cropLeftX,def=0" json:"crop_left_x,omitempty"`
-	CropTopY             *float32 `protobuf:"fixed32,7,opt,name=crop_top_y,json=cropTopY,def=0" json:"crop_top_y,omitempty"`
-	CropRightX           *float32 `protobuf:"fixed32,8,opt,name=crop_right_x,json=cropRightX,def=1" json:"crop_right_x,omitempty"`
-	CropBottomY          *float32 `protobuf:"fixed32,9,opt,name=crop_bottom_y,json=cropBottomY,def=1" json:"crop_bottom_y,omitempty"`
-	Autolevels           *bool    `protobuf:"varint,10,opt,name=autolevels,def=0" json:"autolevels,omitempty"`
-	AllowStretch         *bool    `protobuf:"varint,14,opt,name=allow_stretch,json=allowStretch,def=0" json:"allow_stretch,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Transform) Reset()         { *m = Transform{} }
-func (m *Transform) String() string { return proto.CompactTextString(m) }
-func (*Transform) ProtoMessage()    {}
-func (*Transform) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{2}
-}
-func (m *Transform) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Transform.Unmarshal(m, b)
-}
-func (m *Transform) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Transform.Marshal(b, m, deterministic)
+func (x *ImagesServiceTransform) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
-func (dst *Transform) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Transform.Merge(dst, src)
+
+// Deprecated: Use ImagesServiceTransform.ProtoReflect.Descriptor instead.
+func (*ImagesServiceTransform) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{1}
 }
-func (m *Transform) XXX_Size() int {
-	return xxx_messageInfo_Transform.Size(m)
+
+type Transform struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Width          *int32   `protobuf:"varint,1,opt,name=width,proto3,oneof" json:"width,omitempty"`
+	Height         *int32   `protobuf:"varint,2,opt,name=height,proto3,oneof" json:"height,omitempty"`
+	CropToFit      *bool    `protobuf:"varint,11,opt,name=crop_to_fit,json=cropToFit,proto3,oneof" json:"crop_to_fit,omitempty"`
+	CropOffsetX    *float32 `protobuf:"fixed32,12,opt,name=crop_offset_x,json=cropOffsetX,proto3,oneof" json:"crop_offset_x,omitempty"`
+	CropOffsetY    *float32 `protobuf:"fixed32,13,opt,name=crop_offset_y,json=cropOffsetY,proto3,oneof" json:"crop_offset_y,omitempty"`
+	Rotate         *int32   `protobuf:"varint,3,opt,name=rotate,proto3,oneof" json:"rotate,omitempty"`
+	HorizontalFlip *bool    `protobuf:"varint,4,opt,name=horizontal_flip,json=horizontalFlip,proto3,oneof" json:"horizontal_flip,omitempty"`
+	VerticalFlip   *bool    `protobuf:"varint,5,opt,name=vertical_flip,json=verticalFlip,proto3,oneof" json:"vertical_flip,omitempty"`
+	CropLeftX      *float32 `protobuf:"fixed32,6,opt,name=crop_left_x,json=cropLeftX,proto3,oneof" json:"crop_left_x,omitempty"`
+	CropTopY       *float32 `protobuf:"fixed32,7,opt,name=crop_top_y,json=cropTopY,proto3,oneof" json:"crop_top_y,omitempty"`
+	CropRightX     *float32 `protobuf:"fixed32,8,opt,name=crop_right_x,json=cropRightX,proto3,oneof" json:"crop_right_x,omitempty"`
+	CropBottomY    *float32 `protobuf:"fixed32,9,opt,name=crop_bottom_y,json=cropBottomY,proto3,oneof" json:"crop_bottom_y,omitempty"`
+	Autolevels     *bool    `protobuf:"varint,10,opt,name=autolevels,proto3,oneof" json:"autolevels,omitempty"`
+	AllowStretch   *bool    `protobuf:"varint,14,opt,name=allow_stretch,json=allowStretch,proto3,oneof" json:"allow_stretch,omitempty"`
+}
+
+func (x *Transform) Reset() {
+	*x = Transform{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Transform) XXX_DiscardUnknown() {
-	xxx_messageInfo_Transform.DiscardUnknown(m)
+
+func (x *Transform) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_Transform proto.InternalMessageInfo
+func (*Transform) ProtoMessage() {}
+
+func (x *Transform) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
+}
 
-const Default_Transform_CropToFit bool = false
-const Default_Transform_CropOffsetX float32 = 0.5
-const Default_Transform_CropOffsetY float32 = 0.5
-const Default_Transform_Rotate int32 = 0
-const Default_Transform_HorizontalFlip bool = false
-const Default_Transform_VerticalFlip bool = false
-const Default_Transform_CropLeftX float32 = 0
-const Default_Transform_CropTopY float32 = 0
-const Default_Transform_CropRightX float32 = 1
-const Default_Transform_CropBottomY float32 = 1
-const Default_Transform_Autolevels bool = false
-const Default_Transform_AllowStretch bool = false
+// Deprecated: Use Transform.ProtoReflect.Descriptor instead.
+func (*Transform) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *Transform) GetWidth() int32 {
-	if m != nil && m.Width != nil {
-		return *m.Width
+func (x *Transform) GetWidth() int32 {
+	if x != nil && x.Width != nil {
+		return *x.Width
 	}
 	return 0
 }
 
-func (m *Transform) GetHeight() int32 {
-	if m != nil && m.Height != nil {
-		return *m.Height
+func (x *Transform) GetHeight() int32 {
+	if x != nil && x.Height != nil {
+		return *x.Height
 	}
 	return 0
 }
 
-func (m *Transform) GetCropToFit() bool {
-	if m != nil && m.CropToFit != nil {
-		return *m.CropToFit
+func (x *Transform) GetCropToFit() bool {
+	if x != nil && x.CropToFit != nil {
+		return *x.CropToFit
 	}
-	return Default_Transform_CropToFit
+	return false
 }
 
-func (m *Transform) GetCropOffsetX() float32 {
-	if m != nil && m.CropOffsetX != nil {
-		return *m.CropOffsetX
+func (x *Transform) GetCropOffsetX() float32 {
+	if x != nil && x.CropOffsetX != nil {
+		return *x.CropOffsetX
 	}
-	return Default_Transform_CropOffsetX
+	return 0
 }
 
-func (m *Transform) GetCropOffsetY() float32 {
-	if m != nil && m.CropOffsetY != nil {
-		return *m.CropOffsetY
+func (x *Transform) GetCropOffsetY() float32 {
+	if x != nil && x.CropOffsetY != nil {
+		return *x.CropOffsetY
 	}
-	return Default_Transform_CropOffsetY
+	return 0
 }
 
-func (m *Transform) GetRotate() int32 {
-	if m != nil && m.Rotate != nil {
-		return *m.Rotate
+func (x *Transform) GetRotate() int32 {
+	if x != nil && x.Rotate != nil {
+		return *x.Rotate
 	}
-	return Default_Transform_Rotate
+	return 0
 }
 
-func (m *Transform) GetHorizontalFlip() bool {
-	if m != nil && m.HorizontalFlip != nil {
-		return *m.HorizontalFlip
+func (x *Transform) GetHorizontalFlip() bool {
+	if x != nil && x.HorizontalFlip != nil {
+		return *x.HorizontalFlip
 	}
-	return Default_Transform_HorizontalFlip
+	return false
 }
 
-func (m *Transform) GetVerticalFlip() bool {
-	if m != nil && m.VerticalFlip != nil {
-		return *m.VerticalFlip
+func (x *Transform) GetVerticalFlip() bool {
+	if x != nil && x.VerticalFlip != nil {
+		return *x.VerticalFlip
 	}
-	return Default_Transform_VerticalFlip
+	return false
 }
 
-func (m *Transform) GetCropLeftX() float32 {
-	if m != nil && m.CropLeftX != nil {
-		return *m.CropLeftX
+func (x *Transform) GetCropLeftX() float32 {
+	if x != nil && x.CropLeftX != nil {
+		return *x.CropLeftX
 	}
-	return Default_Transform_CropLeftX
+	return 0
 }
 
-func (m *Transform) GetCropTopY() float32 {
-	if m != nil && m.CropTopY != nil {
-		return *m.CropTopY
+func (x *Transform) GetCropTopY() float32 {
+	if x != nil && x.CropTopY != nil {
+		return *x.CropTopY
 	}
-	return Default_Transform_CropTopY
+	return 0
 }
 
-func (m *Transform) GetCropRightX() float32 {
-	if m != nil && m.CropRightX != nil {
-		return *m.CropRightX
+func (x *Transform) GetCropRightX() float32 {
+	if x != nil && x.CropRightX != nil {
+		return *x.CropRightX
 	}
-	return Default_Transform_CropRightX
+	return 0
 }
 
-func (m *Transform) GetCropBottomY() float32 {
-	if m != nil && m.CropBottomY != nil {
-		return *m.CropBottomY
+func (x *Transform) GetCropBottomY() float32 {
+	if x != nil && x.CropBottomY != nil {
+		return *x.CropBottomY
 	}
-	return Default_Transform_CropBottomY
+	return 0
 }
 
-func (m *Transform) GetAutolevels() bool {
-	if m != nil && m.Autolevels != nil {
-		return *m.Autolevels
+func (x *Transform) GetAutolevels() bool {
+	if x != nil && x.Autolevels != nil {
+		return *x.Autolevels
 	}
-	return Default_Transform_Autolevels
+	return false
 }
 
-func (m *Transform) GetAllowStretch() bool {
-	if m != nil && m.AllowStretch != nil {
-		return *m.AllowStretch
+func (x *Transform) GetAllowStretch() bool {
+	if x != nil && x.AllowStretch != nil {
+		return *x.AllowStretch
 	}
-	return Default_Transform_AllowStretch
+	return false
 }
 
 type ImageData struct {
-	Content              []byte   `protobuf:"bytes,1,req,name=content" json:"content,omitempty"`
-	BlobKey              *string  `protobuf:"bytes,2,opt,name=blob_key,json=blobKey" json:"blob_key,omitempty"`
-	Width                *int32   `protobuf:"varint,3,opt,name=width" json:"width,omitempty"`
-	Height               *int32   `protobuf:"varint,4,opt,name=height" json:"height,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *ImageData) Reset()         { *m = ImageData{} }
-func (m *ImageData) String() string { return proto.CompactTextString(m) }
-func (*ImageData) ProtoMessage()    {}
-func (*ImageData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{3}
-}
-func (m *ImageData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImageData.Unmarshal(m, b)
-}
-func (m *ImageData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImageData.Marshal(b, m, deterministic)
-}
-func (dst *ImageData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageData.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Content []byte  `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
+	BlobKey *string `protobuf:"bytes,2,opt,name=blob_key,json=blobKey,proto3,oneof" json:"blob_key,omitempty"`
+	Width   *int32  `protobuf:"varint,3,opt,name=width,proto3,oneof" json:"width,omitempty"`
+	Height  *int32  `protobuf:"varint,4,opt,name=height,proto3,oneof" json:"height,omitempty"`
+}
+
+func (x *ImageData) Reset() {
+	*x = ImageData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImageData) XXX_Size() int {
-	return xxx_messageInfo_ImageData.Size(m)
+
+func (x *ImageData) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ImageData) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageData.DiscardUnknown(m)
+
+func (*ImageData) ProtoMessage() {}
+
+func (x *ImageData) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_ImageData proto.InternalMessageInfo
+// Deprecated: Use ImageData.ProtoReflect.Descriptor instead.
+func (*ImageData) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *ImageData) GetContent() []byte {
-	if m != nil {
-		return m.Content
+func (x *ImageData) GetContent() []byte {
+	if x != nil {
+		return x.Content
 	}
 	return nil
 }
 
-func (m *ImageData) GetBlobKey() string {
-	if m != nil && m.BlobKey != nil {
-		return *m.BlobKey
+func (x *ImageData) GetBlobKey() string {
+	if x != nil && x.BlobKey != nil {
+		return *x.BlobKey
 	}
 	return ""
 }
 
-func (m *ImageData) GetWidth() int32 {
-	if m != nil && m.Width != nil {
-		return *m.Width
+func (x *ImageData) GetWidth() int32 {
+	if x != nil && x.Width != nil {
+		return *x.Width
 	}
 	return 0
 }
 
-func (m *ImageData) GetHeight() int32 {
-	if m != nil && m.Height != nil {
-		return *m.Height
+func (x *ImageData) GetHeight() int32 {
+	if x != nil && x.Height != nil {
+		return *x.Height
 	}
 	return 0
 }
 
 type InputSettings struct {
-	CorrectExifOrientation     *InputSettings_ORIENTATION_CORRECTION_TYPE `protobuf:"varint,1,opt,name=correct_exif_orientation,json=correctExifOrientation,enum=appengine.InputSettings_ORIENTATION_CORRECTION_TYPE,def=0" json:"correct_exif_orientation,omitempty"`
-	ParseMetadata              *bool                                      `protobuf:"varint,2,opt,name=parse_metadata,json=parseMetadata,def=0" json:"parse_metadata,omitempty"`
-	TransparentSubstitutionRgb *int32                                     `protobuf:"varint,3,opt,name=transparent_substitution_rgb,json=transparentSubstitutionRgb" json:"transparent_substitution_rgb,omitempty"`
-	XXX_NoUnkeyedLiteral       struct{}                                   `json:"-"`
-	XXX_unrecognized           []byte                                     `json:"-"`
-	XXX_sizecache              int32                                      `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *InputSettings) Reset()         { *m = InputSettings{} }
-func (m *InputSettings) String() string { return proto.CompactTextString(m) }
-func (*InputSettings) ProtoMessage()    {}
-func (*InputSettings) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{4}
+	CorrectExifOrientation     *InputSettings_ORIENTATION_CORRECTION_TYPE `protobuf:"varint,1,opt,name=correct_exif_orientation,json=correctExifOrientation,proto3,enum=appengine.InputSettings_ORIENTATION_CORRECTION_TYPE,oneof" json:"correct_exif_orientation,omitempty"`
+	ParseMetadata              *bool                                      `protobuf:"varint,2,opt,name=parse_metadata,json=parseMetadata,proto3,oneof" json:"parse_metadata,omitempty"`
+	TransparentSubstitutionRgb *int32                                     `protobuf:"varint,3,opt,name=transparent_substitution_rgb,json=transparentSubstitutionRgb,proto3,oneof" json:"transparent_substitution_rgb,omitempty"`
 }
-func (m *InputSettings) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_InputSettings.Unmarshal(m, b)
-}
-func (m *InputSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_InputSettings.Marshal(b, m, deterministic)
-}
-func (dst *InputSettings) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InputSettings.Merge(dst, src)
-}
-func (m *InputSettings) XXX_Size() int {
-	return xxx_messageInfo_InputSettings.Size(m)
+
+func (x *InputSettings) Reset() {
+	*x = InputSettings{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *InputSettings) XXX_DiscardUnknown() {
-	xxx_messageInfo_InputSettings.DiscardUnknown(m)
+
+func (x *InputSettings) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_InputSettings proto.InternalMessageInfo
+func (*InputSettings) ProtoMessage() {}
+
+func (x *InputSettings) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
+}
 
-const Default_InputSettings_CorrectExifOrientation InputSettings_ORIENTATION_CORRECTION_TYPE = InputSettings_UNCHANGED_ORIENTATION
-const Default_InputSettings_ParseMetadata bool = false
+// Deprecated: Use InputSettings.ProtoReflect.Descriptor instead.
+func (*InputSettings) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{4}
+}
 
-func (m *InputSettings) GetCorrectExifOrientation() InputSettings_ORIENTATION_CORRECTION_TYPE {
-	if m != nil && m.CorrectExifOrientation != nil {
-		return *m.CorrectExifOrientation
+func (x *InputSettings) GetCorrectExifOrientation() InputSettings_ORIENTATION_CORRECTION_TYPE {
+	if x != nil && x.CorrectExifOrientation != nil {
+		return *x.CorrectExifOrientation
 	}
-	return Default_InputSettings_CorrectExifOrientation
+	return InputSettings_UNCHANGED_ORIENTATION
 }
 
-func (m *InputSettings) GetParseMetadata() bool {
-	if m != nil && m.ParseMetadata != nil {
-		return *m.ParseMetadata
+func (x *InputSettings) GetParseMetadata() bool {
+	if x != nil && x.ParseMetadata != nil {
+		return *x.ParseMetadata
 	}
-	return Default_InputSettings_ParseMetadata
+	return false
 }
 
-func (m *InputSettings) GetTransparentSubstitutionRgb() int32 {
-	if m != nil && m.TransparentSubstitutionRgb != nil {
-		return *m.TransparentSubstitutionRgb
+func (x *InputSettings) GetTransparentSubstitutionRgb() int32 {
+	if x != nil && x.TransparentSubstitutionRgb != nil {
+		return *x.TransparentSubstitutionRgb
 	}
 	return 0
 }
 
 type OutputSettings struct {
-	MimeType             *OutputSettings_MIME_TYPE `protobuf:"varint,1,opt,name=mime_type,json=mimeType,enum=appengine.OutputSettings_MIME_TYPE,def=0" json:"mime_type,omitempty"`
-	Quality              *int32                    `protobuf:"varint,2,opt,name=quality" json:"quality,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *OutputSettings) Reset()         { *m = OutputSettings{} }
-func (m *OutputSettings) String() string { return proto.CompactTextString(m) }
-func (*OutputSettings) ProtoMessage()    {}
-func (*OutputSettings) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{5}
-}
-func (m *OutputSettings) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OutputSettings.Unmarshal(m, b)
+	MimeType *OutputSettings_MIME_TYPE `protobuf:"varint,1,opt,name=mime_type,json=mimeType,proto3,enum=appengine.OutputSettings_MIME_TYPE,oneof" json:"mime_type,omitempty"`
+	Quality  *int32                    `protobuf:"varint,2,opt,name=quality,proto3,oneof" json:"quality,omitempty"`
 }
-func (m *OutputSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OutputSettings.Marshal(b, m, deterministic)
-}
-func (dst *OutputSettings) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OutputSettings.Merge(dst, src)
-}
-func (m *OutputSettings) XXX_Size() int {
-	return xxx_messageInfo_OutputSettings.Size(m)
+
+func (x *OutputSettings) Reset() {
+	*x = OutputSettings{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *OutputSettings) XXX_DiscardUnknown() {
-	xxx_messageInfo_OutputSettings.DiscardUnknown(m)
+
+func (x *OutputSettings) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_OutputSettings proto.InternalMessageInfo
+func (*OutputSettings) ProtoMessage() {}
 
-const Default_OutputSettings_MimeType OutputSettings_MIME_TYPE = OutputSettings_PNG
+func (x *OutputSettings) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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 OutputSettings.ProtoReflect.Descriptor instead.
+func (*OutputSettings) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *OutputSettings) GetMimeType() OutputSettings_MIME_TYPE {
-	if m != nil && m.MimeType != nil {
-		return *m.MimeType
+func (x *OutputSettings) GetMimeType() OutputSettings_MIME_TYPE {
+	if x != nil && x.MimeType != nil {
+		return *x.MimeType
 	}
-	return Default_OutputSettings_MimeType
+	return OutputSettings_PNG
 }
 
-func (m *OutputSettings) GetQuality() int32 {
-	if m != nil && m.Quality != nil {
-		return *m.Quality
+func (x *OutputSettings) GetQuality() int32 {
+	if x != nil && x.Quality != nil {
+		return *x.Quality
 	}
 	return 0
 }
 
 type ImagesTransformRequest struct {
-	Image                *ImageData      `protobuf:"bytes,1,req,name=image" json:"image,omitempty"`
-	Transform            []*Transform    `protobuf:"bytes,2,rep,name=transform" json:"transform,omitempty"`
-	Output               *OutputSettings `protobuf:"bytes,3,req,name=output" json:"output,omitempty"`
-	Input                *InputSettings  `protobuf:"bytes,4,opt,name=input" json:"input,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *ImagesTransformRequest) Reset()         { *m = ImagesTransformRequest{} }
-func (m *ImagesTransformRequest) String() string { return proto.CompactTextString(m) }
-func (*ImagesTransformRequest) ProtoMessage()    {}
-func (*ImagesTransformRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{6}
-}
-func (m *ImagesTransformRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesTransformRequest.Unmarshal(m, b)
-}
-func (m *ImagesTransformRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesTransformRequest.Marshal(b, m, deterministic)
-}
-func (dst *ImagesTransformRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesTransformRequest.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Image     *ImageData      `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
+	Transform []*Transform    `protobuf:"bytes,2,rep,name=transform,proto3" json:"transform,omitempty"`
+	Output    *OutputSettings `protobuf:"bytes,3,opt,name=output,proto3" json:"output,omitempty"`
+	Input     *InputSettings  `protobuf:"bytes,4,opt,name=input,proto3,oneof" json:"input,omitempty"`
+}
+
+func (x *ImagesTransformRequest) Reset() {
+	*x = ImagesTransformRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesTransformRequest) XXX_Size() int {
-	return xxx_messageInfo_ImagesTransformRequest.Size(m)
+
+func (x *ImagesTransformRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ImagesTransformRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesTransformRequest.DiscardUnknown(m)
+
+func (*ImagesTransformRequest) ProtoMessage() {}
+
+func (x *ImagesTransformRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_ImagesTransformRequest proto.InternalMessageInfo
+// Deprecated: Use ImagesTransformRequest.ProtoReflect.Descriptor instead.
+func (*ImagesTransformRequest) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{6}
+}
 
-func (m *ImagesTransformRequest) GetImage() *ImageData {
-	if m != nil {
-		return m.Image
+func (x *ImagesTransformRequest) GetImage() *ImageData {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
 
-func (m *ImagesTransformRequest) GetTransform() []*Transform {
-	if m != nil {
-		return m.Transform
+func (x *ImagesTransformRequest) GetTransform() []*Transform {
+	if x != nil {
+		return x.Transform
 	}
 	return nil
 }
 
-func (m *ImagesTransformRequest) GetOutput() *OutputSettings {
-	if m != nil {
-		return m.Output
+func (x *ImagesTransformRequest) GetOutput() *OutputSettings {
+	if x != nil {
+		return x.Output
 	}
 	return nil
 }
 
-func (m *ImagesTransformRequest) GetInput() *InputSettings {
-	if m != nil {
-		return m.Input
+func (x *ImagesTransformRequest) GetInput() *InputSettings {
+	if x != nil {
+		return x.Input
 	}
 	return nil
 }
 
 type ImagesTransformResponse struct {
-	Image                *ImageData `protobuf:"bytes,1,req,name=image" json:"image,omitempty"`
-	SourceMetadata       *string    `protobuf:"bytes,2,opt,name=source_metadata,json=sourceMetadata" json:"source_metadata,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ImagesTransformResponse) Reset()         { *m = ImagesTransformResponse{} }
-func (m *ImagesTransformResponse) String() string { return proto.CompactTextString(m) }
-func (*ImagesTransformResponse) ProtoMessage()    {}
-func (*ImagesTransformResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{7}
-}
-func (m *ImagesTransformResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesTransformResponse.Unmarshal(m, b)
+	Image          *ImageData `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
+	SourceMetadata *string    `protobuf:"bytes,2,opt,name=source_metadata,json=sourceMetadata,proto3,oneof" json:"source_metadata,omitempty"`
 }
-func (m *ImagesTransformResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesTransformResponse.Marshal(b, m, deterministic)
-}
-func (dst *ImagesTransformResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesTransformResponse.Merge(dst, src)
+
+func (x *ImagesTransformResponse) Reset() {
+	*x = ImagesTransformResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesTransformResponse) XXX_Size() int {
-	return xxx_messageInfo_ImagesTransformResponse.Size(m)
+
+func (x *ImagesTransformResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ImagesTransformResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesTransformResponse.DiscardUnknown(m)
+
+func (*ImagesTransformResponse) ProtoMessage() {}
+
+func (x *ImagesTransformResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_ImagesTransformResponse proto.InternalMessageInfo
+// Deprecated: Use ImagesTransformResponse.ProtoReflect.Descriptor instead.
+func (*ImagesTransformResponse) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{7}
+}
 
-func (m *ImagesTransformResponse) GetImage() *ImageData {
-	if m != nil {
-		return m.Image
+func (x *ImagesTransformResponse) GetImage() *ImageData {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
 
-func (m *ImagesTransformResponse) GetSourceMetadata() string {
-	if m != nil && m.SourceMetadata != nil {
-		return *m.SourceMetadata
+func (x *ImagesTransformResponse) GetSourceMetadata() string {
+	if x != nil && x.SourceMetadata != nil {
+		return *x.SourceMetadata
 	}
 	return ""
 }
 
 type CompositeImageOptions struct {
-	SourceIndex          *int32                        `protobuf:"varint,1,req,name=source_index,json=sourceIndex" json:"source_index,omitempty"`
-	XOffset              *int32                        `protobuf:"varint,2,req,name=x_offset,json=xOffset" json:"x_offset,omitempty"`
-	YOffset              *int32                        `protobuf:"varint,3,req,name=y_offset,json=yOffset" json:"y_offset,omitempty"`
-	Opacity              *float32                      `protobuf:"fixed32,4,req,name=opacity" json:"opacity,omitempty"`
-	Anchor               *CompositeImageOptions_ANCHOR `protobuf:"varint,5,req,name=anchor,enum=appengine.CompositeImageOptions_ANCHOR" json:"anchor,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
-	XXX_unrecognized     []byte                        `json:"-"`
-	XXX_sizecache        int32                         `json:"-"`
-}
-
-func (m *CompositeImageOptions) Reset()         { *m = CompositeImageOptions{} }
-func (m *CompositeImageOptions) String() string { return proto.CompactTextString(m) }
-func (*CompositeImageOptions) ProtoMessage()    {}
-func (*CompositeImageOptions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{8}
-}
-func (m *CompositeImageOptions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CompositeImageOptions.Unmarshal(m, b)
-}
-func (m *CompositeImageOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CompositeImageOptions.Marshal(b, m, deterministic)
-}
-func (dst *CompositeImageOptions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompositeImageOptions.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SourceIndex int32                        `protobuf:"varint,1,opt,name=source_index,json=sourceIndex,proto3" json:"source_index,omitempty"`
+	XOffset     int32                        `protobuf:"varint,2,opt,name=x_offset,json=xOffset,proto3" json:"x_offset,omitempty"`
+	YOffset     int32                        `protobuf:"varint,3,opt,name=y_offset,json=yOffset,proto3" json:"y_offset,omitempty"`
+	Opacity     float32                      `protobuf:"fixed32,4,opt,name=opacity,proto3" json:"opacity,omitempty"`
+	Anchor      CompositeImageOptions_ANCHOR `protobuf:"varint,5,opt,name=anchor,proto3,enum=appengine.CompositeImageOptions_ANCHOR" json:"anchor,omitempty"`
+}
+
+func (x *CompositeImageOptions) Reset() {
+	*x = CompositeImageOptions{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CompositeImageOptions) XXX_Size() int {
-	return xxx_messageInfo_CompositeImageOptions.Size(m)
+
+func (x *CompositeImageOptions) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CompositeImageOptions) XXX_DiscardUnknown() {
-	xxx_messageInfo_CompositeImageOptions.DiscardUnknown(m)
+
+func (*CompositeImageOptions) ProtoMessage() {}
+
+func (x *CompositeImageOptions) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_CompositeImageOptions proto.InternalMessageInfo
+// Deprecated: Use CompositeImageOptions.ProtoReflect.Descriptor instead.
+func (*CompositeImageOptions) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{8}
+}
 
-func (m *CompositeImageOptions) GetSourceIndex() int32 {
-	if m != nil && m.SourceIndex != nil {
-		return *m.SourceIndex
+func (x *CompositeImageOptions) GetSourceIndex() int32 {
+	if x != nil {
+		return x.SourceIndex
 	}
 	return 0
 }
 
-func (m *CompositeImageOptions) GetXOffset() int32 {
-	if m != nil && m.XOffset != nil {
-		return *m.XOffset
+func (x *CompositeImageOptions) GetXOffset() int32 {
+	if x != nil {
+		return x.XOffset
 	}
 	return 0
 }
 
-func (m *CompositeImageOptions) GetYOffset() int32 {
-	if m != nil && m.YOffset != nil {
-		return *m.YOffset
+func (x *CompositeImageOptions) GetYOffset() int32 {
+	if x != nil {
+		return x.YOffset
 	}
 	return 0
 }
 
-func (m *CompositeImageOptions) GetOpacity() float32 {
-	if m != nil && m.Opacity != nil {
-		return *m.Opacity
+func (x *CompositeImageOptions) GetOpacity() float32 {
+	if x != nil {
+		return x.Opacity
 	}
 	return 0
 }
 
-func (m *CompositeImageOptions) GetAnchor() CompositeImageOptions_ANCHOR {
-	if m != nil && m.Anchor != nil {
-		return *m.Anchor
+func (x *CompositeImageOptions) GetAnchor() CompositeImageOptions_ANCHOR {
+	if x != nil {
+		return x.Anchor
 	}
 	return CompositeImageOptions_TOP_LEFT
 }
 
 type ImagesCanvas struct {
-	Width                *int32          `protobuf:"varint,1,req,name=width" json:"width,omitempty"`
-	Height               *int32          `protobuf:"varint,2,req,name=height" json:"height,omitempty"`
-	Output               *OutputSettings `protobuf:"bytes,3,req,name=output" json:"output,omitempty"`
-	Color                *int32          `protobuf:"varint,4,opt,name=color,def=-1" json:"color,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *ImagesCanvas) Reset()         { *m = ImagesCanvas{} }
-func (m *ImagesCanvas) String() string { return proto.CompactTextString(m) }
-func (*ImagesCanvas) ProtoMessage()    {}
-func (*ImagesCanvas) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{9}
-}
-func (m *ImagesCanvas) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesCanvas.Unmarshal(m, b)
-}
-func (m *ImagesCanvas) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesCanvas.Marshal(b, m, deterministic)
-}
-func (dst *ImagesCanvas) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesCanvas.Merge(dst, src)
-}
-func (m *ImagesCanvas) XXX_Size() int {
-	return xxx_messageInfo_ImagesCanvas.Size(m)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Width  int32           `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"`
+	Height int32           `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
+	Output *OutputSettings `protobuf:"bytes,3,opt,name=output,proto3" json:"output,omitempty"`
+	Color  *int32          `protobuf:"varint,4,opt,name=color,proto3,oneof" json:"color,omitempty"`
+}
+
+func (x *ImagesCanvas) Reset() {
+	*x = ImagesCanvas{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesCanvas) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesCanvas.DiscardUnknown(m)
+
+func (x *ImagesCanvas) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ImagesCanvas proto.InternalMessageInfo
+func (*ImagesCanvas) ProtoMessage() {}
 
-const Default_ImagesCanvas_Color int32 = -1
+func (x *ImagesCanvas) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
+}
 
-func (m *ImagesCanvas) GetWidth() int32 {
-	if m != nil && m.Width != nil {
-		return *m.Width
+// Deprecated: Use ImagesCanvas.ProtoReflect.Descriptor instead.
+func (*ImagesCanvas) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *ImagesCanvas) GetWidth() int32 {
+	if x != nil {
+		return x.Width
 	}
 	return 0
 }
 
-func (m *ImagesCanvas) GetHeight() int32 {
-	if m != nil && m.Height != nil {
-		return *m.Height
+func (x *ImagesCanvas) GetHeight() int32 {
+	if x != nil {
+		return x.Height
 	}
 	return 0
 }
 
-func (m *ImagesCanvas) GetOutput() *OutputSettings {
-	if m != nil {
-		return m.Output
+func (x *ImagesCanvas) GetOutput() *OutputSettings {
+	if x != nil {
+		return x.Output
 	}
 	return nil
 }
 
-func (m *ImagesCanvas) GetColor() int32 {
-	if m != nil && m.Color != nil {
-		return *m.Color
+func (x *ImagesCanvas) GetColor() int32 {
+	if x != nil && x.Color != nil {
+		return *x.Color
 	}
-	return Default_ImagesCanvas_Color
+	return 0
 }
 
 type ImagesCompositeRequest struct {
-	Image                []*ImageData             `protobuf:"bytes,1,rep,name=image" json:"image,omitempty"`
-	Options              []*CompositeImageOptions `protobuf:"bytes,2,rep,name=options" json:"options,omitempty"`
-	Canvas               *ImagesCanvas            `protobuf:"bytes,3,req,name=canvas" json:"canvas,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ImagesCompositeRequest) Reset()         { *m = ImagesCompositeRequest{} }
-func (m *ImagesCompositeRequest) String() string { return proto.CompactTextString(m) }
-func (*ImagesCompositeRequest) ProtoMessage()    {}
-func (*ImagesCompositeRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{10}
-}
-func (m *ImagesCompositeRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesCompositeRequest.Unmarshal(m, b)
-}
-func (m *ImagesCompositeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesCompositeRequest.Marshal(b, m, deterministic)
+	Image   []*ImageData             `protobuf:"bytes,1,rep,name=image,proto3" json:"image,omitempty"`
+	Options []*CompositeImageOptions `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"`
+	Canvas  *ImagesCanvas            `protobuf:"bytes,3,opt,name=canvas,proto3" json:"canvas,omitempty"`
 }
-func (dst *ImagesCompositeRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesCompositeRequest.Merge(dst, src)
+
+func (x *ImagesCompositeRequest) Reset() {
+	*x = ImagesCompositeRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesCompositeRequest) XXX_Size() int {
-	return xxx_messageInfo_ImagesCompositeRequest.Size(m)
+
+func (x *ImagesCompositeRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ImagesCompositeRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesCompositeRequest.DiscardUnknown(m)
+
+func (*ImagesCompositeRequest) ProtoMessage() {}
+
+func (x *ImagesCompositeRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_ImagesCompositeRequest proto.InternalMessageInfo
+// Deprecated: Use ImagesCompositeRequest.ProtoReflect.Descriptor instead.
+func (*ImagesCompositeRequest) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{10}
+}
 
-func (m *ImagesCompositeRequest) GetImage() []*ImageData {
-	if m != nil {
-		return m.Image
+func (x *ImagesCompositeRequest) GetImage() []*ImageData {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
 
-func (m *ImagesCompositeRequest) GetOptions() []*CompositeImageOptions {
-	if m != nil {
-		return m.Options
+func (x *ImagesCompositeRequest) GetOptions() []*CompositeImageOptions {
+	if x != nil {
+		return x.Options
 	}
 	return nil
 }
 
-func (m *ImagesCompositeRequest) GetCanvas() *ImagesCanvas {
-	if m != nil {
-		return m.Canvas
+func (x *ImagesCompositeRequest) GetCanvas() *ImagesCanvas {
+	if x != nil {
+		return x.Canvas
 	}
 	return nil
 }
 
 type ImagesCompositeResponse struct {
-	Image                *ImageData `protobuf:"bytes,1,req,name=image" json:"image,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ImagesCompositeResponse) Reset()         { *m = ImagesCompositeResponse{} }
-func (m *ImagesCompositeResponse) String() string { return proto.CompactTextString(m) }
-func (*ImagesCompositeResponse) ProtoMessage()    {}
-func (*ImagesCompositeResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{11}
-}
-func (m *ImagesCompositeResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesCompositeResponse.Unmarshal(m, b)
+	Image *ImageData `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
 }
-func (m *ImagesCompositeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesCompositeResponse.Marshal(b, m, deterministic)
-}
-func (dst *ImagesCompositeResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesCompositeResponse.Merge(dst, src)
+
+func (x *ImagesCompositeResponse) Reset() {
+	*x = ImagesCompositeResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesCompositeResponse) XXX_Size() int {
-	return xxx_messageInfo_ImagesCompositeResponse.Size(m)
+
+func (x *ImagesCompositeResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ImagesCompositeResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesCompositeResponse.DiscardUnknown(m)
+
+func (*ImagesCompositeResponse) ProtoMessage() {}
+
+func (x *ImagesCompositeResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_ImagesCompositeResponse proto.InternalMessageInfo
+// Deprecated: Use ImagesCompositeResponse.ProtoReflect.Descriptor instead.
+func (*ImagesCompositeResponse) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{11}
+}
 
-func (m *ImagesCompositeResponse) GetImage() *ImageData {
-	if m != nil {
-		return m.Image
+func (x *ImagesCompositeResponse) GetImage() *ImageData {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
 
 type ImagesHistogramRequest struct {
-	Image                *ImageData `protobuf:"bytes,1,req,name=image" json:"image,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ImagesHistogramRequest) Reset()         { *m = ImagesHistogramRequest{} }
-func (m *ImagesHistogramRequest) String() string { return proto.CompactTextString(m) }
-func (*ImagesHistogramRequest) ProtoMessage()    {}
-func (*ImagesHistogramRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{12}
-}
-func (m *ImagesHistogramRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesHistogramRequest.Unmarshal(m, b)
-}
-func (m *ImagesHistogramRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesHistogramRequest.Marshal(b, m, deterministic)
+	Image *ImageData `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"`
 }
-func (dst *ImagesHistogramRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesHistogramRequest.Merge(dst, src)
+
+func (x *ImagesHistogramRequest) Reset() {
+	*x = ImagesHistogramRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesHistogramRequest) XXX_Size() int {
-	return xxx_messageInfo_ImagesHistogramRequest.Size(m)
+
+func (x *ImagesHistogramRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ImagesHistogramRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesHistogramRequest.DiscardUnknown(m)
+
+func (*ImagesHistogramRequest) ProtoMessage() {}
+
+func (x *ImagesHistogramRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_ImagesHistogramRequest proto.InternalMessageInfo
+// Deprecated: Use ImagesHistogramRequest.ProtoReflect.Descriptor instead.
+func (*ImagesHistogramRequest) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{12}
+}
 
-func (m *ImagesHistogramRequest) GetImage() *ImageData {
-	if m != nil {
-		return m.Image
+func (x *ImagesHistogramRequest) GetImage() *ImageData {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
 
 type ImagesHistogram struct {
-	Red                  []int32  `protobuf:"varint,1,rep,name=red" json:"red,omitempty"`
-	Green                []int32  `protobuf:"varint,2,rep,name=green" json:"green,omitempty"`
-	Blue                 []int32  `protobuf:"varint,3,rep,name=blue" json:"blue,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ImagesHistogram) Reset()         { *m = ImagesHistogram{} }
-func (m *ImagesHistogram) String() string { return proto.CompactTextString(m) }
-func (*ImagesHistogram) ProtoMessage()    {}
-func (*ImagesHistogram) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{13}
-}
-func (m *ImagesHistogram) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesHistogram.Unmarshal(m, b)
+	Red   []int32 `protobuf:"varint,1,rep,packed,name=red,proto3" json:"red,omitempty"`
+	Green []int32 `protobuf:"varint,2,rep,packed,name=green,proto3" json:"green,omitempty"`
+	Blue  []int32 `protobuf:"varint,3,rep,packed,name=blue,proto3" json:"blue,omitempty"`
 }
-func (m *ImagesHistogram) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesHistogram.Marshal(b, m, deterministic)
-}
-func (dst *ImagesHistogram) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesHistogram.Merge(dst, src)
+
+func (x *ImagesHistogram) Reset() {
+	*x = ImagesHistogram{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesHistogram) XXX_Size() int {
-	return xxx_messageInfo_ImagesHistogram.Size(m)
+
+func (x *ImagesHistogram) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ImagesHistogram) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesHistogram.DiscardUnknown(m)
+
+func (*ImagesHistogram) ProtoMessage() {}
+
+func (x *ImagesHistogram) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_ImagesHistogram proto.InternalMessageInfo
+// Deprecated: Use ImagesHistogram.ProtoReflect.Descriptor instead.
+func (*ImagesHistogram) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{13}
+}
 
-func (m *ImagesHistogram) GetRed() []int32 {
-	if m != nil {
-		return m.Red
+func (x *ImagesHistogram) GetRed() []int32 {
+	if x != nil {
+		return x.Red
 	}
 	return nil
 }
 
-func (m *ImagesHistogram) GetGreen() []int32 {
-	if m != nil {
-		return m.Green
+func (x *ImagesHistogram) GetGreen() []int32 {
+	if x != nil {
+		return x.Green
 	}
 	return nil
 }
 
-func (m *ImagesHistogram) GetBlue() []int32 {
-	if m != nil {
-		return m.Blue
+func (x *ImagesHistogram) GetBlue() []int32 {
+	if x != nil {
+		return x.Blue
 	}
 	return nil
 }
 
 type ImagesHistogramResponse struct {
-	Histogram            *ImagesHistogram `protobuf:"bytes,1,req,name=histogram" json:"histogram,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ImagesHistogramResponse) Reset()         { *m = ImagesHistogramResponse{} }
-func (m *ImagesHistogramResponse) String() string { return proto.CompactTextString(m) }
-func (*ImagesHistogramResponse) ProtoMessage()    {}
-func (*ImagesHistogramResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{14}
-}
-func (m *ImagesHistogramResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesHistogramResponse.Unmarshal(m, b)
+	Histogram *ImagesHistogram `protobuf:"bytes,1,opt,name=histogram,proto3" json:"histogram,omitempty"`
 }
-func (m *ImagesHistogramResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesHistogramResponse.Marshal(b, m, deterministic)
-}
-func (dst *ImagesHistogramResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesHistogramResponse.Merge(dst, src)
+
+func (x *ImagesHistogramResponse) Reset() {
+	*x = ImagesHistogramResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesHistogramResponse) XXX_Size() int {
-	return xxx_messageInfo_ImagesHistogramResponse.Size(m)
+
+func (x *ImagesHistogramResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ImagesHistogramResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesHistogramResponse.DiscardUnknown(m)
+
+func (*ImagesHistogramResponse) ProtoMessage() {}
+
+func (x *ImagesHistogramResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_ImagesHistogramResponse proto.InternalMessageInfo
+// Deprecated: Use ImagesHistogramResponse.ProtoReflect.Descriptor instead.
+func (*ImagesHistogramResponse) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{14}
+}
 
-func (m *ImagesHistogramResponse) GetHistogram() *ImagesHistogram {
-	if m != nil {
-		return m.Histogram
+func (x *ImagesHistogramResponse) GetHistogram() *ImagesHistogram {
+	if x != nil {
+		return x.Histogram
 	}
 	return nil
 }
 
 type ImagesGetUrlBaseRequest struct {
-	BlobKey              *string  `protobuf:"bytes,1,req,name=blob_key,json=blobKey" json:"blob_key,omitempty"`
-	CreateSecureUrl      *bool    `protobuf:"varint,2,opt,name=create_secure_url,json=createSecureUrl,def=0" json:"create_secure_url,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ImagesGetUrlBaseRequest) Reset()         { *m = ImagesGetUrlBaseRequest{} }
-func (m *ImagesGetUrlBaseRequest) String() string { return proto.CompactTextString(m) }
-func (*ImagesGetUrlBaseRequest) ProtoMessage()    {}
-func (*ImagesGetUrlBaseRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{15}
-}
-func (m *ImagesGetUrlBaseRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesGetUrlBaseRequest.Unmarshal(m, b)
+	BlobKey         string `protobuf:"bytes,1,opt,name=blob_key,json=blobKey,proto3" json:"blob_key,omitempty"`
+	CreateSecureUrl *bool  `protobuf:"varint,2,opt,name=create_secure_url,json=createSecureUrl,proto3,oneof" json:"create_secure_url,omitempty"`
 }
-func (m *ImagesGetUrlBaseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesGetUrlBaseRequest.Marshal(b, m, deterministic)
-}
-func (dst *ImagesGetUrlBaseRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesGetUrlBaseRequest.Merge(dst, src)
-}
-func (m *ImagesGetUrlBaseRequest) XXX_Size() int {
-	return xxx_messageInfo_ImagesGetUrlBaseRequest.Size(m)
+
+func (x *ImagesGetUrlBaseRequest) Reset() {
+	*x = ImagesGetUrlBaseRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesGetUrlBaseRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesGetUrlBaseRequest.DiscardUnknown(m)
+
+func (x *ImagesGetUrlBaseRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ImagesGetUrlBaseRequest proto.InternalMessageInfo
+func (*ImagesGetUrlBaseRequest) ProtoMessage() {}
 
-const Default_ImagesGetUrlBaseRequest_CreateSecureUrl bool = false
+func (x *ImagesGetUrlBaseRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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 ImagesGetUrlBaseRequest.ProtoReflect.Descriptor instead.
+func (*ImagesGetUrlBaseRequest) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{15}
+}
 
-func (m *ImagesGetUrlBaseRequest) GetBlobKey() string {
-	if m != nil && m.BlobKey != nil {
-		return *m.BlobKey
+func (x *ImagesGetUrlBaseRequest) GetBlobKey() string {
+	if x != nil {
+		return x.BlobKey
 	}
 	return ""
 }
 
-func (m *ImagesGetUrlBaseRequest) GetCreateSecureUrl() bool {
-	if m != nil && m.CreateSecureUrl != nil {
-		return *m.CreateSecureUrl
+func (x *ImagesGetUrlBaseRequest) GetCreateSecureUrl() bool {
+	if x != nil && x.CreateSecureUrl != nil {
+		return *x.CreateSecureUrl
 	}
-	return Default_ImagesGetUrlBaseRequest_CreateSecureUrl
+	return false
 }
 
 type ImagesGetUrlBaseResponse struct {
-	Url                  *string  `protobuf:"bytes,1,req,name=url" json:"url,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ImagesGetUrlBaseResponse) Reset()         { *m = ImagesGetUrlBaseResponse{} }
-func (m *ImagesGetUrlBaseResponse) String() string { return proto.CompactTextString(m) }
-func (*ImagesGetUrlBaseResponse) ProtoMessage()    {}
-func (*ImagesGetUrlBaseResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{16}
-}
-func (m *ImagesGetUrlBaseResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesGetUrlBaseResponse.Unmarshal(m, b)
-}
-func (m *ImagesGetUrlBaseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesGetUrlBaseResponse.Marshal(b, m, deterministic)
+	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
 }
-func (dst *ImagesGetUrlBaseResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesGetUrlBaseResponse.Merge(dst, src)
+
+func (x *ImagesGetUrlBaseResponse) Reset() {
+	*x = ImagesGetUrlBaseResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesGetUrlBaseResponse) XXX_Size() int {
-	return xxx_messageInfo_ImagesGetUrlBaseResponse.Size(m)
+
+func (x *ImagesGetUrlBaseResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ImagesGetUrlBaseResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesGetUrlBaseResponse.DiscardUnknown(m)
+
+func (*ImagesGetUrlBaseResponse) ProtoMessage() {}
+
+func (x *ImagesGetUrlBaseResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_ImagesGetUrlBaseResponse proto.InternalMessageInfo
+// Deprecated: Use ImagesGetUrlBaseResponse.ProtoReflect.Descriptor instead.
+func (*ImagesGetUrlBaseResponse) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{16}
+}
 
-func (m *ImagesGetUrlBaseResponse) GetUrl() string {
-	if m != nil && m.Url != nil {
-		return *m.Url
+func (x *ImagesGetUrlBaseResponse) GetUrl() string {
+	if x != nil {
+		return x.Url
 	}
 	return ""
 }
 
 type ImagesDeleteUrlBaseRequest struct {
-	BlobKey              *string  `protobuf:"bytes,1,req,name=blob_key,json=blobKey" json:"blob_key,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ImagesDeleteUrlBaseRequest) Reset()         { *m = ImagesDeleteUrlBaseRequest{} }
-func (m *ImagesDeleteUrlBaseRequest) String() string { return proto.CompactTextString(m) }
-func (*ImagesDeleteUrlBaseRequest) ProtoMessage()    {}
-func (*ImagesDeleteUrlBaseRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{17}
+	BlobKey string `protobuf:"bytes,1,opt,name=blob_key,json=blobKey,proto3" json:"blob_key,omitempty"`
 }
-func (m *ImagesDeleteUrlBaseRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesDeleteUrlBaseRequest.Unmarshal(m, b)
-}
-func (m *ImagesDeleteUrlBaseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesDeleteUrlBaseRequest.Marshal(b, m, deterministic)
-}
-func (dst *ImagesDeleteUrlBaseRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesDeleteUrlBaseRequest.Merge(dst, src)
+
+func (x *ImagesDeleteUrlBaseRequest) Reset() {
+	*x = ImagesDeleteUrlBaseRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ImagesDeleteUrlBaseRequest) XXX_Size() int {
-	return xxx_messageInfo_ImagesDeleteUrlBaseRequest.Size(m)
+
+func (x *ImagesDeleteUrlBaseRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ImagesDeleteUrlBaseRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesDeleteUrlBaseRequest.DiscardUnknown(m)
+
+func (*ImagesDeleteUrlBaseRequest) ProtoMessage() {}
+
+func (x *ImagesDeleteUrlBaseRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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)
 }
 
-var xxx_messageInfo_ImagesDeleteUrlBaseRequest proto.InternalMessageInfo
+// Deprecated: Use ImagesDeleteUrlBaseRequest.ProtoReflect.Descriptor instead.
+func (*ImagesDeleteUrlBaseRequest) Descriptor() ([]byte, []int) {
+	return file_images_service_proto_rawDescGZIP(), []int{17}
+}
 
-func (m *ImagesDeleteUrlBaseRequest) GetBlobKey() string {
-	if m != nil && m.BlobKey != nil {
-		return *m.BlobKey
+func (x *ImagesDeleteUrlBaseRequest) GetBlobKey() string {
+	if x != nil {
+		return x.BlobKey
 	}
 	return ""
 }
 
 type ImagesDeleteUrlBaseResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *ImagesDeleteUrlBaseResponse) Reset()         { *m = ImagesDeleteUrlBaseResponse{} }
-func (m *ImagesDeleteUrlBaseResponse) String() string { return proto.CompactTextString(m) }
-func (*ImagesDeleteUrlBaseResponse) ProtoMessage()    {}
+func (x *ImagesDeleteUrlBaseResponse) Reset() {
+	*x = ImagesDeleteUrlBaseResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_images_service_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ImagesDeleteUrlBaseResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImagesDeleteUrlBaseResponse) ProtoMessage() {}
+
+func (x *ImagesDeleteUrlBaseResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_images_service_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 ImagesDeleteUrlBaseResponse.ProtoReflect.Descriptor instead.
 func (*ImagesDeleteUrlBaseResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_images_service_42a9d451721edce4, []int{18}
-}
-func (m *ImagesDeleteUrlBaseResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImagesDeleteUrlBaseResponse.Unmarshal(m, b)
-}
-func (m *ImagesDeleteUrlBaseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImagesDeleteUrlBaseResponse.Marshal(b, m, deterministic)
-}
-func (dst *ImagesDeleteUrlBaseResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImagesDeleteUrlBaseResponse.Merge(dst, src)
-}
-func (m *ImagesDeleteUrlBaseResponse) XXX_Size() int {
-	return xxx_messageInfo_ImagesDeleteUrlBaseResponse.Size(m)
-}
-func (m *ImagesDeleteUrlBaseResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImagesDeleteUrlBaseResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImagesDeleteUrlBaseResponse proto.InternalMessageInfo
-
-func init() {
-	proto.RegisterType((*ImagesServiceError)(nil), "appengine.ImagesServiceError")
-	proto.RegisterType((*ImagesServiceTransform)(nil), "appengine.ImagesServiceTransform")
-	proto.RegisterType((*Transform)(nil), "appengine.Transform")
-	proto.RegisterType((*ImageData)(nil), "appengine.ImageData")
-	proto.RegisterType((*InputSettings)(nil), "appengine.InputSettings")
-	proto.RegisterType((*OutputSettings)(nil), "appengine.OutputSettings")
-	proto.RegisterType((*ImagesTransformRequest)(nil), "appengine.ImagesTransformRequest")
-	proto.RegisterType((*ImagesTransformResponse)(nil), "appengine.ImagesTransformResponse")
-	proto.RegisterType((*CompositeImageOptions)(nil), "appengine.CompositeImageOptions")
-	proto.RegisterType((*ImagesCanvas)(nil), "appengine.ImagesCanvas")
-	proto.RegisterType((*ImagesCompositeRequest)(nil), "appengine.ImagesCompositeRequest")
-	proto.RegisterType((*ImagesCompositeResponse)(nil), "appengine.ImagesCompositeResponse")
-	proto.RegisterType((*ImagesHistogramRequest)(nil), "appengine.ImagesHistogramRequest")
-	proto.RegisterType((*ImagesHistogram)(nil), "appengine.ImagesHistogram")
-	proto.RegisterType((*ImagesHistogramResponse)(nil), "appengine.ImagesHistogramResponse")
-	proto.RegisterType((*ImagesGetUrlBaseRequest)(nil), "appengine.ImagesGetUrlBaseRequest")
-	proto.RegisterType((*ImagesGetUrlBaseResponse)(nil), "appengine.ImagesGetUrlBaseResponse")
-	proto.RegisterType((*ImagesDeleteUrlBaseRequest)(nil), "appengine.ImagesDeleteUrlBaseRequest")
-	proto.RegisterType((*ImagesDeleteUrlBaseResponse)(nil), "appengine.ImagesDeleteUrlBaseResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/image/images_service.proto", fileDescriptor_images_service_42a9d451721edce4)
-}
-
-var fileDescriptor_images_service_42a9d451721edce4 = []byte{
-	// 1460 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xdd, 0x6e, 0xe3, 0xc6,
-	0x15, 0x5e, 0x52, 0xff, 0xc7, 0xb2, 0xcc, 0x9d, 0xec, 0x0f, 0x77, 0x93, 0xa2, 0x0a, 0x83, 0xc5,
-	0x1a, 0x41, 0x2a, 0xaf, 0x8d, 0x16, 0x2d, 0x7c, 0x93, 0xea, 0x87, 0x92, 0x99, 0x95, 0x44, 0x75,
-	0x44, 0xa7, 0xeb, 0xbd, 0x19, 0xd0, 0xf2, 0x48, 0x26, 0x4a, 0x73, 0x98, 0xe1, 0xc8, 0xb1, 0x7a,
-	0x51, 0xf4, 0xa6, 0x17, 0x05, 0xfa, 0x06, 0x7d, 0x8a, 0xbe, 0x45, 0x81, 0xbe, 0x41, 0xfb, 0x32,
-	0xc5, 0x0c, 0x49, 0x99, 0xf6, 0x3a, 0x4d, 0xb3, 0x37, 0xc2, 0xcc, 0x39, 0xdf, 0xf9, 0x9d, 0x8f,
-	0xe7, 0x08, 0xbe, 0x5e, 0x31, 0xb6, 0x0a, 0x69, 0x67, 0xc5, 0x42, 0x3f, 0x5a, 0x75, 0x18, 0x5f,
-	0x1d, 0xf8, 0x71, 0x4c, 0xa3, 0x55, 0x10, 0xd1, 0x83, 0x20, 0x12, 0x94, 0x47, 0x7e, 0x78, 0x10,
-	0x5c, 0xf9, 0x2b, 0x9a, 0xfe, 0x26, 0x24, 0xa1, 0xfc, 0x3a, 0x58, 0xd0, 0x4e, 0xcc, 0x99, 0x60,
-	0xa8, 0xb1, 0x85, 0x5b, 0xff, 0xd4, 0x00, 0x39, 0x0a, 0x33, 0x4f, 0x21, 0x36, 0xe7, 0x8c, 0x5b,
-	0xff, 0xd0, 0xa0, 0xa1, 0x4e, 0x7d, 0x76, 0x41, 0xd1, 0x53, 0x78, 0x7c, 0x3a, 0x9d, 0xcf, 0xec,
-	0xbe, 0x33, 0x74, 0xec, 0x01, 0xb1, 0x31, 0x76, 0xb1, 0xa1, 0xa1, 0x67, 0x80, 0x7a, 0xdd, 0x01,
-	0xf1, 0x70, 0x77, 0x3a, 0x1f, 0xba, 0x78, 0x42, 0x06, 0x5d, 0xaf, 0x6b, 0xe8, 0x68, 0x17, 0x1a,
-	0x53, 0xd7, 0x23, 0xce, 0xa4, 0x3b, 0xb2, 0x8d, 0x12, 0x42, 0xd0, 0x92, 0x30, 0x75, 0x4d, 0x21,
-	0x65, 0xf4, 0x09, 0xec, 0xa5, 0x77, 0xcf, 0x75, 0xc9, 0xb8, 0x8b, 0x47, 0xb6, 0x51, 0x41, 0x4f,
-	0xc0, 0x70, 0xa6, 0xdf, 0x76, 0xc7, 0xce, 0x80, 0xf4, 0xc6, 0x6e, 0x8f, 0xbc, 0xb5, 0xcf, 0x8c,
-	0x2a, 0x7a, 0x0c, 0xbb, 0xdd, 0x7e, 0xdf, 0x9e, 0xcf, 0xc9, 0xc0, 0x9e, 0x3a, 0xf6, 0xc0, 0xa8,
-	0x49, 0xa0, 0xdb, 0xfb, 0xc6, 0xee, 0x7b, 0x44, 0xc6, 0x19, 0xba, 0xa7, 0xd3, 0x81, 0x51, 0xb7,
-	0xfe, 0xac, 0xc1, 0xb3, 0x3b, 0xa5, 0x78, 0xdc, 0x8f, 0x92, 0x25, 0xe3, 0x57, 0xd6, 0x12, 0xca,
-	0xde, 0x26, 0xa6, 0x08, 0xa0, 0x8a, 0xed, 0xb9, 0xf3, 0xde, 0x36, 0x34, 0x75, 0x76, 0xbd, 0xae,
-	0x67, 0x1b, 0xba, 0x4c, 0xe7, 0xc4, 0xc5, 0xce, 0x7b, 0x77, 0xea, 0x75, 0xc7, 0x64, 0x38, 0x76,
-	0x66, 0x46, 0x49, 0x06, 0xfe, 0xd6, 0xc6, 0x9e, 0xd3, 0xcf, 0x45, 0x65, 0x54, 0x87, 0x72, 0x1f,
-	0xbb, 0xb3, 0x2c, 0xd7, 0x09, 0x19, 0xda, 0xf6, 0xd8, 0x99, 0x8e, 0xc8, 0xf8, 0xb4, 0xff, 0xf6,
-	0xcc, 0xa8, 0x5a, 0x7f, 0x2b, 0x43, 0x63, 0x1b, 0x15, 0x3d, 0x81, 0xca, 0xf7, 0xc1, 0x85, 0xb8,
-	0x34, 0xb5, 0xb6, 0xb6, 0x5f, 0xc1, 0xe9, 0x05, 0x3d, 0x83, 0xea, 0x25, 0x0d, 0x56, 0x97, 0xc2,
-	0xd4, 0x95, 0x38, 0xbb, 0xa1, 0x57, 0xb0, 0xb3, 0xe0, 0x2c, 0x26, 0x82, 0x91, 0x65, 0x20, 0xcc,
-	0x9d, 0xb6, 0xb6, 0x5f, 0x3f, 0xae, 0x2c, 0xfd, 0x30, 0xa1, 0xb8, 0x21, 0x35, 0x1e, 0x1b, 0x06,
-	0x02, 0xbd, 0x86, 0x5d, 0x05, 0x63, 0xcb, 0x65, 0x42, 0x05, 0xb9, 0x31, 0x9b, 0x6d, 0x6d, 0x5f,
-	0x3f, 0x2e, 0xbd, 0xe9, 0xfc, 0x0a, 0x2b, 0x07, 0xae, 0x52, 0xbc, 0xbb, 0x0f, 0xdc, 0x98, 0xbb,
-	0x0f, 0x02, 0xcf, 0xd0, 0x0b, 0xa8, 0x72, 0x26, 0x7c, 0x41, 0xcd, 0x92, 0x4c, 0xe8, 0x58, 0x7b,
-	0x83, 0x33, 0x01, 0xea, 0xc0, 0xde, 0x25, 0xe3, 0xc1, 0x1f, 0x59, 0x24, 0xfc, 0x90, 0x2c, 0xc3,
-	0x20, 0x36, 0xcb, 0xc5, 0xbc, 0x5a, 0xb7, 0xda, 0x61, 0x18, 0xc4, 0xe8, 0x4b, 0xd8, 0xbd, 0xa6,
-	0x5c, 0x04, 0x8b, 0x1c, 0x5d, 0x29, 0xa2, 0x9b, 0xb9, 0x4e, 0x61, 0x3f, 0xcf, 0xea, 0x0d, 0xe9,
-	0x52, 0x96, 0x51, 0x55, 0xd9, 0x69, 0x6f, 0xd2, 0x5a, 0xc7, 0x74, 0x29, 0xde, 0xa1, 0x9f, 0x03,
-	0x64, 0x2d, 0x89, 0xc9, 0xc6, 0xac, 0xe5, 0x88, 0x7a, 0xda, 0x8d, 0xf8, 0x0c, 0x7d, 0x01, 0x4d,
-	0x05, 0xe0, 0xb2, 0x83, 0xe4, 0xc6, 0xac, 0xa7, 0x90, 0x43, 0xac, 0xec, 0xb0, 0x94, 0xbe, 0x43,
-	0xaf, 0xb2, 0x46, 0x9c, 0x33, 0x21, 0xd8, 0x15, 0xd9, 0x98, 0x8d, 0x1c, 0xa5, 0x12, 0xe8, 0x29,
-	0xf1, 0x19, 0x7a, 0x05, 0xe0, 0xaf, 0x05, 0x0b, 0xe9, 0x35, 0x0d, 0x13, 0x13, 0x8a, 0x89, 0x17,
-	0x14, 0xb2, 0x44, 0x3f, 0x0c, 0xd9, 0xf7, 0x24, 0x11, 0x9c, 0x8a, 0xc5, 0xa5, 0xd9, 0xba, 0x53,
-	0xa2, 0xd2, 0xcd, 0x53, 0x95, 0xc5, 0xa1, 0xa1, 0x08, 0x39, 0xf0, 0x85, 0x8f, 0x3e, 0x83, 0xda,
-	0x82, 0x45, 0x82, 0x46, 0xc2, 0xd4, 0xda, 0xfa, 0x7e, 0xb3, 0xa7, 0xd7, 0x35, 0x9c, 0x8b, 0xd0,
-	0x0b, 0xa8, 0x9f, 0x87, 0xec, 0x9c, 0xfc, 0x81, 0x6e, 0x14, 0x2f, 0x1a, 0xb8, 0x26, 0xef, 0x6f,
-	0xe9, 0xe6, 0x96, 0x46, 0xa5, 0x87, 0x69, 0x54, 0x2e, 0xd2, 0xc8, 0xfa, 0xb7, 0x0e, 0xbb, 0x4e,
-	0x14, 0xaf, 0xc5, 0x9c, 0x0a, 0x11, 0x44, 0xab, 0x04, 0xfd, 0x45, 0x03, 0x73, 0xc1, 0x38, 0xa7,
-	0x0b, 0x41, 0xe8, 0x4d, 0xb0, 0x24, 0x8c, 0x07, 0x34, 0x12, 0xbe, 0x08, 0x58, 0xa4, 0xa8, 0xd9,
-	0x3a, 0xfa, 0x65, 0x67, 0x3b, 0x11, 0x3a, 0x77, 0x8c, 0x3b, 0x2e, 0x76, 0xec, 0xa9, 0xd7, 0xf5,
-	0x1c, 0x77, 0x4a, 0xfa, 0x2e, 0xc6, 0x76, 0x5f, 0x1d, 0xbd, 0xb3, 0x99, 0x7d, 0xfc, 0xf4, 0x74,
-	0xda, 0x3f, 0xe9, 0x4e, 0x47, 0xf6, 0x80, 0x14, 0x60, 0xf8, 0x59, 0x16, 0xcc, 0xbe, 0x09, 0x96,
-	0xee, 0x6d, 0x28, 0xf4, 0x15, 0xb4, 0x62, 0x9f, 0x27, 0x94, 0x5c, 0x51, 0xe1, 0x5f, 0xf8, 0xc2,
-	0x57, 0x85, 0x6e, 0x5b, 0xb7, 0xab, 0x94, 0x93, 0x4c, 0x87, 0x7e, 0x0b, 0x9f, 0x09, 0xf9, 0x25,
-	0xc5, 0x3e, 0xa7, 0x91, 0x20, 0xc9, 0xfa, 0x3c, 0x11, 0x81, 0x58, 0x4b, 0x4f, 0x84, 0xaf, 0xce,
-	0xb3, 0x66, 0xbc, 0x2c, 0x60, 0xe6, 0x05, 0x08, 0x5e, 0x9d, 0x5b, 0xbf, 0x83, 0x4f, 0xff, 0x47,
-	0xf6, 0xe8, 0x05, 0x3c, 0x9c, 0xbf, 0xf1, 0x08, 0x3d, 0x87, 0x4f, 0x32, 0xf4, 0x1d, 0x85, 0x66,
-	0xfd, 0x5d, 0x83, 0x96, 0xbb, 0x16, 0xc5, 0xee, 0xda, 0xd0, 0xb8, 0x0a, 0xae, 0x28, 0x11, 0x9b,
-	0x98, 0x66, 0xdd, 0xfc, 0xa2, 0xd0, 0xcd, 0xbb, 0xe8, 0xce, 0xc4, 0x99, 0xd8, 0x69, 0xf3, 0x4a,
-	0xb3, 0xe9, 0x08, 0xd7, 0xa5, 0xa9, 0x9a, 0x4c, 0x26, 0xd4, 0xbe, 0x5b, 0xfb, 0x61, 0x20, 0x36,
-	0xd9, 0x58, 0xc8, 0xaf, 0xd6, 0x3e, 0x34, 0xb6, 0x56, 0xa8, 0x06, 0xd2, 0xce, 0x78, 0x24, 0x27,
-	0xd1, 0x37, 0x33, 0x7b, 0x64, 0x68, 0xf2, 0xf4, 0x7b, 0xbb, 0x37, 0x33, 0x74, 0xeb, 0x3f, 0xdb,
-	0x01, 0xb8, 0x9d, 0x41, 0x98, 0x7e, 0xb7, 0xa6, 0x89, 0x40, 0x5f, 0x42, 0x45, 0x6d, 0x02, 0x45,
-	0xbd, 0x9d, 0xa3, 0x27, 0xc5, 0xf7, 0xce, 0x19, 0x8a, 0x53, 0x08, 0x3a, 0x82, 0x86, 0xc8, 0xed,
-	0x4d, 0xbd, 0x5d, 0xba, 0x87, 0xbf, 0xf5, 0x7d, 0x0b, 0x43, 0x87, 0x50, 0x65, 0xaa, 0x52, 0xb3,
-	0xa4, 0x02, 0xbc, 0xf8, 0xc1, 0x16, 0xe0, 0x0c, 0x88, 0x3a, 0x50, 0x09, 0x24, 0xd5, 0x14, 0x7f,
-	0x77, 0x8e, 0xcc, 0x1f, 0xa2, 0x20, 0x4e, 0x61, 0x56, 0x04, 0xcf, 0x3f, 0x28, 0x2e, 0x89, 0x59,
-	0x94, 0xd0, 0x9f, 0x54, 0xdd, 0x6b, 0xd8, 0x4b, 0xd8, 0x9a, 0x2f, 0xee, 0xd1, 0xb0, 0x81, 0x5b,
-	0xa9, 0x38, 0x27, 0xa0, 0xf5, 0x2f, 0x1d, 0x9e, 0xf6, 0xd9, 0x55, 0xcc, 0x92, 0x40, 0x50, 0xe5,
-	0xc6, 0x8d, 0x25, 0xb5, 0x12, 0xf4, 0x39, 0x34, 0x33, 0x17, 0x41, 0x74, 0x41, 0x6f, 0x54, 0xd4,
-	0x0a, 0xde, 0x49, 0x65, 0x8e, 0x14, 0xc9, 0xcf, 0xf9, 0x26, 0x9b, 0xbc, 0xa6, 0xae, 0xd4, 0xb5,
-	0x9b, 0x74, 0xde, 0x4a, 0xd5, 0x26, 0x57, 0x95, 0x52, 0xd5, 0x26, 0x53, 0x99, 0x50, 0x63, 0xb1,
-	0xbf, 0x90, 0x24, 0x28, 0xb7, 0xf5, 0x7d, 0x1d, 0xe7, 0x57, 0xf4, 0x35, 0x54, 0xfd, 0x68, 0x71,
-	0xc9, 0xb8, 0x59, 0x69, 0xeb, 0xfb, 0xad, 0xa3, 0xd7, 0x85, 0x12, 0x1f, 0x4c, 0xb2, 0xd3, 0x9d,
-	0xf6, 0x4f, 0x5c, 0x8c, 0x33, 0x33, 0xeb, 0x4f, 0x50, 0x4d, 0x25, 0xa8, 0x09, 0x75, 0xcf, 0x9d,
-	0x91, 0xb1, 0x3d, 0xf4, 0x8c, 0x47, 0x92, 0x50, 0x9e, 0x3b, 0x33, 0x34, 0xb9, 0xb4, 0xa5, 0x18,
-	0x3b, 0xa3, 0x13, 0xcf, 0xd0, 0x25, 0xab, 0x14, 0xa2, 0x24, 0xf7, 0x64, 0xdf, 0x9e, 0x7a, 0x36,
-	0x36, 0xca, 0xa8, 0x01, 0x95, 0x14, 0x50, 0x41, 0x7b, 0xb0, 0xd3, 0x73, 0x3d, 0xcf, 0x9d, 0xa4,
-	0x9e, 0xaa, 0x12, 0x97, 0x0a, 0x8c, 0x1a, 0x32, 0xa0, 0x99, 0x29, 0x53, 0x78, 0xdd, 0xfa, 0xab,
-	0x06, 0xcd, 0xf4, 0xf9, 0xfa, 0x7e, 0x74, 0xed, 0x27, 0xc5, 0xe5, 0xa8, 0x3f, 0xbc, 0x1c, 0xf5,
-	0xc2, 0x72, 0xfc, 0x08, 0x7e, 0x99, 0x50, 0x59, 0xb0, 0x90, 0xf1, 0x74, 0x3e, 0x1e, 0xeb, 0xbf,
-	0x38, 0xc4, 0xa9, 0x40, 0xfe, 0xb9, 0xc9, 0xbe, 0x93, 0x6d, 0xeb, 0x1e, 0xf8, 0x4e, 0x4a, 0x3f,
-	0xc6, 0xa4, 0x63, 0xf9, 0x5a, 0xaa, 0xd9, 0xd9, 0x57, 0xd2, 0xfe, 0xb1, 0x47, 0xc1, 0xb9, 0x01,
-	0x3a, 0x80, 0xea, 0x42, 0xf5, 0x21, 0xab, 0xe7, 0xf9, 0xfd, 0x40, 0x59, 0x9b, 0x70, 0x06, 0xb3,
-	0xec, 0x9c, 0xfd, 0x85, 0x94, 0x7f, 0x3a, 0xfb, 0xad, 0x41, 0x5e, 0xf9, 0x49, 0x90, 0x08, 0xb6,
-	0xe2, 0xfe, 0xc7, 0x4c, 0x08, 0x6b, 0x02, 0x7b, 0xf7, 0xbc, 0x20, 0x03, 0x4a, 0x9c, 0x5e, 0xa8,
-	0xb6, 0x55, 0xb0, 0x3c, 0xca, 0x07, 0x5e, 0x71, 0x4a, 0x23, 0xd5, 0x9c, 0x0a, 0x4e, 0x2f, 0x08,
-	0x41, 0xf9, 0x3c, 0x5c, 0xcb, 0xbf, 0x1a, 0x52, 0xa8, 0xce, 0xd6, 0x3c, 0xaf, 0xad, 0x90, 0x54,
-	0x56, 0xdb, 0x6f, 0xa0, 0x71, 0x99, 0x0b, 0xb3, 0xcc, 0x5e, 0x7e, 0xd0, 0xaa, 0x5b, 0xb3, 0x5b,
-	0xb0, 0xb5, 0xca, 0x9d, 0x8e, 0xa8, 0x38, 0xe5, 0x61, 0xcf, 0x4f, 0xb6, 0x8f, 0x5c, 0xdc, 0xb5,
-	0xd2, 0x67, 0x61, 0xd7, 0x1e, 0xc2, 0xe3, 0x05, 0xa7, 0xbe, 0xa0, 0x24, 0xa1, 0x8b, 0x35, 0xa7,
-	0x64, 0xcd, 0xc3, 0xbb, 0x6b, 0x6a, 0x2f, 0xd5, 0xcf, 0x95, 0xfa, 0x94, 0x87, 0xd6, 0x57, 0x60,
-	0x7e, 0x18, 0x28, 0x4b, 0xdf, 0x80, 0x92, 0x74, 0x90, 0x06, 0x91, 0x47, 0xeb, 0xd7, 0xf0, 0x32,
-	0x45, 0x0f, 0x68, 0x48, 0x05, 0xfd, 0xbf, 0x33, 0xb3, 0x7e, 0x06, 0x9f, 0x3e, 0x68, 0x98, 0x46,
-	0xea, 0xd5, 0xde, 0xa7, 0x6f, 0xf3, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfa, 0x74, 0x30, 0x89,
-	0x1d, 0x0c, 0x00, 0x00,
+	return file_images_service_proto_rawDescGZIP(), []int{18}
+}
+
+var File_images_service_proto protoreflect.FileDescriptor
+
+var file_images_service_proto_rawDesc = []byte{
+	0x0a, 0x14, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x22, 0xd2, 0x01, 0x0a, 0x12, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xbb, 0x01, 0x0a, 0x09, 0x45, 0x72, 0x72,
+	0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00,
+	0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f,
+	0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x41, 0x44, 0x5f, 0x54,
+	0x52, 0x41, 0x4e, 0x53, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x02, 0x12,
+	0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x12,
+	0x0a, 0x0e, 0x42, 0x41, 0x44, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41,
+	0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f,
+	0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c,
+	0x49, 0x44, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x06, 0x12, 0x11, 0x0a,
+	0x0d, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x07,
+	0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46,
+	0x4f, 0x55, 0x4e, 0x44, 0x10, 0x08, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x49, 0x6d, 0x61, 0x67, 0x65,
+	0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72,
+	0x6d, 0x22, 0x70, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e,
+	0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x01, 0x12,
+	0x0a, 0x0a, 0x06, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x48,
+	0x4f, 0x52, 0x49, 0x5a, 0x4f, 0x4e, 0x54, 0x41, 0x4c, 0x5f, 0x46, 0x4c, 0x49, 0x50, 0x10, 0x03,
+	0x12, 0x11, 0x0a, 0x0d, 0x56, 0x45, 0x52, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x46, 0x4c, 0x49,
+	0x50, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x52, 0x4f, 0x50, 0x10, 0x05, 0x12, 0x14, 0x0a,
+	0x10, 0x49, 0x4d, 0x5f, 0x46, 0x45, 0x45, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x55, 0x43, 0x4b,
+	0x59, 0x10, 0x06, 0x22, 0xf3, 0x05, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72,
+	0x6d, 0x12, 0x19, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06,
+	0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x06,
+	0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b, 0x63, 0x72, 0x6f,
+	0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02,
+	0x52, 0x09, 0x63, 0x72, 0x6f, 0x70, 0x54, 0x6f, 0x46, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x27,
+	0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x78, 0x18,
+	0x0c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66,
+	0x73, 0x65, 0x74, 0x58, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x70, 0x5f,
+	0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04,
+	0x52, 0x0b, 0x63, 0x72, 0x6f, 0x70, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x88, 0x01, 0x01,
+	0x12, 0x1b, 0x0a, 0x06, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x05, 0x52, 0x06, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a,
+	0x0f, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x69, 0x70,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x0e, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f,
+	0x6e, 0x74, 0x61, 0x6c, 0x46, 0x6c, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x76,
+	0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x07, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x46, 0x6c,
+	0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x6c, 0x65,
+	0x66, 0x74, 0x5f, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x48, 0x08, 0x52, 0x09, 0x63, 0x72,
+	0x6f, 0x70, 0x4c, 0x65, 0x66, 0x74, 0x58, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x0a, 0x63, 0x72,
+	0x6f, 0x70, 0x5f, 0x74, 0x6f, 0x70, 0x5f, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09,
+	0x52, 0x08, 0x63, 0x72, 0x6f, 0x70, 0x54, 0x6f, 0x70, 0x59, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a,
+	0x0c, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x78, 0x18, 0x08, 0x20,
+	0x01, 0x28, 0x02, 0x48, 0x0a, 0x52, 0x0a, 0x63, 0x72, 0x6f, 0x70, 0x52, 0x69, 0x67, 0x68, 0x74,
+	0x58, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x62, 0x6f, 0x74,
+	0x74, 0x6f, 0x6d, 0x5f, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0b, 0x52, 0x0b, 0x63,
+	0x72, 0x6f, 0x70, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x59, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a,
+	0x0a, 0x61, 0x75, 0x74, 0x6f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28,
+	0x08, 0x48, 0x0c, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x72, 0x65,
+	0x74, 0x63, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0d, 0x52, 0x0c, 0x61, 0x6c, 0x6c,
+	0x6f, 0x77, 0x53, 0x74, 0x72, 0x65, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06,
+	0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68,
+	0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x69,
+	0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65,
+	0x74, 0x5f, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x6f, 0x66, 0x66,
+	0x73, 0x65, 0x74, 0x5f, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65,
+	0x42, 0x12, 0x0a, 0x10, 0x5f, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x5f,
+	0x66, 0x6c, 0x69, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61,
+	0x6c, 0x5f, 0x66, 0x6c, 0x69, 0x70, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x72, 0x6f, 0x70, 0x5f,
+	0x6c, 0x65, 0x66, 0x74, 0x5f, 0x78, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x72, 0x6f, 0x70, 0x5f,
+	0x74, 0x6f, 0x70, 0x5f, 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x72,
+	0x69, 0x67, 0x68, 0x74, 0x5f, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x70, 0x5f,
+	0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x75, 0x74,
+	0x6f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x6c, 0x6c, 0x6f,
+	0x77, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x74, 0x63, 0x68, 0x22, 0xa3, 0x01, 0x0a, 0x09, 0x49, 0x6d,
+	0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
+	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x08, 0x01, 0x52, 0x07, 0x63, 0x6f,
+	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x65,
+	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x4b,
+	0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x88, 0x01, 0x01,
+	0x12, 0x1b, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x02, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a,
+	0x09, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x77,
+	0x69, 0x64, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22,
+	0x9b, 0x03, 0x0a, 0x0d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+	0x73, 0x12, 0x73, 0x0a, 0x18, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x78, 0x69,
+	0x66, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4f, 0x52,
+	0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43,
+	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x48, 0x00, 0x52, 0x16, 0x63, 0x6f, 0x72,
+	0x72, 0x65, 0x63, 0x74, 0x45, 0x78, 0x69, 0x66, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f,
+	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01,
+	0x52, 0x0d, 0x70, 0x61, 0x72, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88,
+	0x01, 0x01, 0x12, 0x45, 0x0a, 0x1c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e,
+	0x74, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72,
+	0x67, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x1a, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74,
+	0x69, 0x6f, 0x6e, 0x52, 0x67, 0x62, 0x88, 0x01, 0x01, 0x22, 0x51, 0x0a, 0x1b, 0x4f, 0x52, 0x49,
+	0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54,
+	0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x4e, 0x43, 0x48,
+	0x41, 0x4e, 0x47, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f,
+	0x4e, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x4f,
+	0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x42, 0x1b, 0x0a, 0x19,
+	0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x66, 0x5f, 0x6f, 0x72,
+	0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x61,
+	0x72, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x1f, 0x0a, 0x1d,
+	0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x75, 0x62,
+	0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x67, 0x62, 0x22, 0xba, 0x01,
+	0x0a, 0x0e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
+	0x12, 0x45, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4d,
+	0x49, 0x4d, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65,
+	0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69,
+	0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c,
+	0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x22, 0x28, 0x0a, 0x09, 0x4d, 0x49, 0x4d, 0x45, 0x5f, 0x54,
+	0x59, 0x50, 0x45, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
+	0x4a, 0x50, 0x45, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x45, 0x42, 0x50, 0x10, 0x02,
+	0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a,
+	0x0a, 0x08, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0xea, 0x01, 0x0a, 0x16, 0x49,
+	0x6d, 0x61, 0x67, 0x65, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67,
+	0x65, 0x12, 0x32, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x31, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
+	0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75,
+	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+	0x73, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a,
+	0x06, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x22, 0x87, 0x01, 0x0a, 0x17, 0x49, 0x6d, 0x61, 0x67,
+	0x65, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49,
+	0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12,
+	0x2c, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+	0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a,
+	0x10, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+	0x61, 0x22, 0xcb, 0x02, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49,
+	0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73,
+	0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19,
+	0x0a, 0x08, 0x78, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x07, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x79, 0x5f, 0x6f,
+	0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x79, 0x4f, 0x66,
+	0x66, 0x73, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x3f,
+	0x0a, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
+	0x73, 0x69, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x41, 0x4e, 0x43, 0x48, 0x4f, 0x52, 0x52, 0x06, 0x61, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x22,
+	0x7e, 0x0a, 0x06, 0x41, 0x4e, 0x43, 0x48, 0x4f, 0x52, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4f, 0x50,
+	0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x4f, 0x50, 0x10, 0x01,
+	0x12, 0x0d, 0x0a, 0x09, 0x54, 0x4f, 0x50, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x02, 0x12,
+	0x08, 0x0a, 0x04, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x45, 0x4e,
+	0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x05,
+	0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10,
+	0x06, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x10, 0x07, 0x12, 0x10, 0x0a,
+	0x0c, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x08, 0x22,
+	0x94, 0x01, 0x0a, 0x0c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73,
+	0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x31,
+	0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75,
+	0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75,
+	0x74, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06,
+	0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0xb1, 0x01, 0x0a, 0x16, 0x49, 0x6d, 0x61, 0x67, 0x65,
+	0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6d, 0x61,
+	0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a,
+	0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
+	0x73, 0x69, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x61, 0x6e,
+	0x76, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x43, 0x61, 0x6e, 0x76,
+	0x61, 0x73, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x22, 0x45, 0x0a, 0x17, 0x49, 0x6d,
+	0x61, 0x67, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67,
+	0x65, 0x22, 0x44, 0x0a, 0x16, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f,
+	0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x69,
+	0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61,
+	0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x4d, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65,
+	0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65,
+	0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05,
+	0x67, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x65,
+	0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05,
+	0x52, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x22, 0x53, 0x0a, 0x17, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73,
+	0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x38, 0x0a, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d,
+	0x52, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x22, 0x7b, 0x0a, 0x17, 0x49,
+	0x6d, 0x61, 0x67, 0x65, 0x73, 0x47, 0x65, 0x74, 0x55, 0x72, 0x6c, 0x42, 0x61, 0x73, 0x65, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x4b, 0x65,
+	0x79, 0x12, 0x2f, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75,
+	0x72, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f,
+	0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x55, 0x72, 0x6c, 0x88,
+	0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65,
+	0x63, 0x75, 0x72, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x2c, 0x0a, 0x18, 0x49, 0x6d, 0x61, 0x67,
+	0x65, 0x73, 0x47, 0x65, 0x74, 0x55, 0x72, 0x6c, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x37, 0x0a, 0x1a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73,
+	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x4b, 0x65, 0x79, 0x22,
+	0x1d, 0x0a, 0x1b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55,
+	0x72, 0x6c, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2c,
+	0x5a, 0x2a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_images_service_proto_rawDescOnce sync.Once
+	file_images_service_proto_rawDescData = file_images_service_proto_rawDesc
+)
+
+func file_images_service_proto_rawDescGZIP() []byte {
+	file_images_service_proto_rawDescOnce.Do(func() {
+		file_images_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_images_service_proto_rawDescData)
+	})
+	return file_images_service_proto_rawDescData
+}
+
+var file_images_service_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
+var file_images_service_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
+var file_images_service_proto_goTypes = []interface{}{
+	(ImagesServiceError_ErrorCode)(0),              // 0: appengine.ImagesServiceError.ErrorCode
+	(ImagesServiceTransform_Type)(0),               // 1: appengine.ImagesServiceTransform.Type
+	(InputSettings_ORIENTATION_CORRECTION_TYPE)(0), // 2: appengine.InputSettings.ORIENTATION_CORRECTION_TYPE
+	(OutputSettings_MIME_TYPE)(0),                  // 3: appengine.OutputSettings.MIME_TYPE
+	(CompositeImageOptions_ANCHOR)(0),              // 4: appengine.CompositeImageOptions.ANCHOR
+	(*ImagesServiceError)(nil),                     // 5: appengine.ImagesServiceError
+	(*ImagesServiceTransform)(nil),                 // 6: appengine.ImagesServiceTransform
+	(*Transform)(nil),                              // 7: appengine.Transform
+	(*ImageData)(nil),                              // 8: appengine.ImageData
+	(*InputSettings)(nil),                          // 9: appengine.InputSettings
+	(*OutputSettings)(nil),                         // 10: appengine.OutputSettings
+	(*ImagesTransformRequest)(nil),                 // 11: appengine.ImagesTransformRequest
+	(*ImagesTransformResponse)(nil),                // 12: appengine.ImagesTransformResponse
+	(*CompositeImageOptions)(nil),                  // 13: appengine.CompositeImageOptions
+	(*ImagesCanvas)(nil),                           // 14: appengine.ImagesCanvas
+	(*ImagesCompositeRequest)(nil),                 // 15: appengine.ImagesCompositeRequest
+	(*ImagesCompositeResponse)(nil),                // 16: appengine.ImagesCompositeResponse
+	(*ImagesHistogramRequest)(nil),                 // 17: appengine.ImagesHistogramRequest
+	(*ImagesHistogram)(nil),                        // 18: appengine.ImagesHistogram
+	(*ImagesHistogramResponse)(nil),                // 19: appengine.ImagesHistogramResponse
+	(*ImagesGetUrlBaseRequest)(nil),                // 20: appengine.ImagesGetUrlBaseRequest
+	(*ImagesGetUrlBaseResponse)(nil),               // 21: appengine.ImagesGetUrlBaseResponse
+	(*ImagesDeleteUrlBaseRequest)(nil),             // 22: appengine.ImagesDeleteUrlBaseRequest
+	(*ImagesDeleteUrlBaseResponse)(nil),            // 23: appengine.ImagesDeleteUrlBaseResponse
+}
+var file_images_service_proto_depIdxs = []int32{
+	2,  // 0: appengine.InputSettings.correct_exif_orientation:type_name -> appengine.InputSettings.ORIENTATION_CORRECTION_TYPE
+	3,  // 1: appengine.OutputSettings.mime_type:type_name -> appengine.OutputSettings.MIME_TYPE
+	8,  // 2: appengine.ImagesTransformRequest.image:type_name -> appengine.ImageData
+	7,  // 3: appengine.ImagesTransformRequest.transform:type_name -> appengine.Transform
+	10, // 4: appengine.ImagesTransformRequest.output:type_name -> appengine.OutputSettings
+	9,  // 5: appengine.ImagesTransformRequest.input:type_name -> appengine.InputSettings
+	8,  // 6: appengine.ImagesTransformResponse.image:type_name -> appengine.ImageData
+	4,  // 7: appengine.CompositeImageOptions.anchor:type_name -> appengine.CompositeImageOptions.ANCHOR
+	10, // 8: appengine.ImagesCanvas.output:type_name -> appengine.OutputSettings
+	8,  // 9: appengine.ImagesCompositeRequest.image:type_name -> appengine.ImageData
+	13, // 10: appengine.ImagesCompositeRequest.options:type_name -> appengine.CompositeImageOptions
+	14, // 11: appengine.ImagesCompositeRequest.canvas:type_name -> appengine.ImagesCanvas
+	8,  // 12: appengine.ImagesCompositeResponse.image:type_name -> appengine.ImageData
+	8,  // 13: appengine.ImagesHistogramRequest.image:type_name -> appengine.ImageData
+	18, // 14: appengine.ImagesHistogramResponse.histogram:type_name -> appengine.ImagesHistogram
+	15, // [15:15] is the sub-list for method output_type
+	15, // [15:15] is the sub-list for method input_type
+	15, // [15:15] is the sub-list for extension type_name
+	15, // [15:15] is the sub-list for extension extendee
+	0,  // [0:15] is the sub-list for field type_name
+}
+
+func init() { file_images_service_proto_init() }
+func file_images_service_proto_init() {
+	if File_images_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_images_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesServiceTransform); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Transform); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImageData); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*InputSettings); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*OutputSettings); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesTransformRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesTransformResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CompositeImageOptions); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesCanvas); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesCompositeRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesCompositeResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesHistogramRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesHistogram); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesHistogramResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesGetUrlBaseRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesGetUrlBaseResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesDeleteUrlBaseRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_images_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ImagesDeleteUrlBaseResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_images_service_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	file_images_service_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	file_images_service_proto_msgTypes[4].OneofWrappers = []interface{}{}
+	file_images_service_proto_msgTypes[5].OneofWrappers = []interface{}{}
+	file_images_service_proto_msgTypes[6].OneofWrappers = []interface{}{}
+	file_images_service_proto_msgTypes[7].OneofWrappers = []interface{}{}
+	file_images_service_proto_msgTypes[9].OneofWrappers = []interface{}{}
+	file_images_service_proto_msgTypes[15].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_images_service_proto_rawDesc,
+			NumEnums:      5,
+			NumMessages:   19,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_images_service_proto_goTypes,
+		DependencyIndexes: file_images_service_proto_depIdxs,
+		EnumInfos:         file_images_service_proto_enumTypes,
+		MessageInfos:      file_images_service_proto_msgTypes,
+	}.Build()
+	File_images_service_proto = out.File
+	file_images_service_proto_rawDesc = nil
+	file_images_service_proto_goTypes = nil
+	file_images_service_proto_depIdxs = nil
 }
diff --git a/internal/image/images_service.proto b/internal/image/images_service.proto
index f0d2ed5d..062a9e62 100644
--- a/internal/image/images_service.proto
+++ b/internal/image/images_service.proto
@@ -1,10 +1,11 @@
-syntax = "proto2";
-option go_package = "image";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/image";
 
 package appengine;
 
 message ImagesServiceError {
   enum ErrorCode {
+    NONE = 0;
     UNSPECIFIED_ERROR = 1;
     BAD_TRANSFORM_DATA = 2;
     NOT_IMAGE = 3;
@@ -18,6 +19,7 @@ message ImagesServiceError {
 
 message ImagesServiceTransform {
   enum Type {
+    NONE = 0;
     RESIZE = 1;
     ROTATE = 2;
     HORIZONTAL_FLIP = 3;
@@ -30,28 +32,28 @@ message ImagesServiceTransform {
 message Transform {
   optional int32 width = 1;
   optional int32 height = 2;
-  optional bool crop_to_fit = 11 [default = false];
-  optional float crop_offset_x = 12 [default = 0.5];
-  optional float crop_offset_y = 13 [default = 0.5];
+  optional bool crop_to_fit = 11 ;
+  optional float crop_offset_x = 12;
+  optional float crop_offset_y = 13;
 
-  optional int32 rotate = 3 [default = 0];
+  optional int32 rotate = 3;
 
-  optional bool horizontal_flip = 4 [default = false];
+  optional bool horizontal_flip = 4 ;
 
-  optional bool vertical_flip = 5 [default = false];
+  optional bool vertical_flip = 5 ;
 
-  optional float crop_left_x = 6 [default = 0.0];
-  optional float crop_top_y = 7 [default = 0.0];
-  optional float crop_right_x = 8 [default = 1.0];
-  optional float crop_bottom_y = 9 [default = 1.0];
+  optional float crop_left_x = 6;
+  optional float crop_top_y = 7;
+  optional float crop_right_x = 8;
+  optional float crop_bottom_y = 9;
 
-  optional bool autolevels = 10 [default = false];
+  optional bool autolevels = 10 ;
 
-  optional bool allow_stretch = 14 [default = false];
+  optional bool allow_stretch = 14 ;
 }
 
 message ImageData {
-  required bytes content = 1 [ctype=CORD];
+  bytes content = 1 [ctype=CORD];
   optional string blob_key = 2;
 
   optional int32 width = 3;
@@ -63,9 +65,8 @@ message InputSettings {
     UNCHANGED_ORIENTATION = 0;
     CORRECT_ORIENTATION = 1;
   }
-  optional ORIENTATION_CORRECTION_TYPE correct_exif_orientation = 1
-      [default=UNCHANGED_ORIENTATION];
-  optional bool parse_metadata = 2 [default=false];
+  optional ORIENTATION_CORRECTION_TYPE correct_exif_orientation = 1;
+  optional bool parse_metadata = 2 ;
   optional int32 transparent_substitution_rgb = 3;
 }
 
@@ -76,27 +77,27 @@ message OutputSettings {
     WEBP = 2;
   }
 
-  optional MIME_TYPE mime_type = 1 [default=PNG];
+  optional MIME_TYPE mime_type = 1 ;
   optional int32 quality = 2;
 }
 
 message ImagesTransformRequest {
-  required ImageData image = 1;
+  ImageData image = 1;
   repeated Transform transform = 2;
-  required OutputSettings output = 3;
+  OutputSettings output = 3;
   optional InputSettings input = 4;
 }
 
 message ImagesTransformResponse {
-  required ImageData image = 1;
+  ImageData image = 1;
   optional string source_metadata = 2;
 }
 
 message CompositeImageOptions {
-  required int32 source_index = 1;
-  required int32 x_offset = 2;
-  required int32 y_offset = 3;
-  required float opacity = 4;
+  int32 source_index = 1;
+  int32 x_offset = 2;
+  int32 y_offset = 3;
+  float opacity = 4;
 
   enum ANCHOR {
     TOP_LEFT = 0;
@@ -110,28 +111,28 @@ message CompositeImageOptions {
     BOTTOM_RIGHT = 8;
   }
 
-  required ANCHOR anchor = 5;
+  ANCHOR anchor = 5;
 }
 
 message ImagesCanvas {
-  required int32 width = 1;
-  required int32 height = 2;
-  required OutputSettings output = 3;
-  optional int32 color = 4 [default=-1];
+  int32 width = 1;
+  int32 height = 2;
+  OutputSettings output = 3;
+  optional int32 color = 4 ;
 }
 
 message ImagesCompositeRequest {
   repeated ImageData image = 1;
   repeated CompositeImageOptions options = 2;
-  required ImagesCanvas canvas = 3;
+  ImagesCanvas canvas = 3;
 }
 
 message ImagesCompositeResponse {
-  required ImageData image = 1;
+  ImageData image = 1;
 }
 
 message ImagesHistogramRequest {
-  required ImageData image = 1;
+ ImageData image = 1;
 }
 
 message ImagesHistogram {
@@ -141,21 +142,21 @@ message ImagesHistogram {
 }
 
 message ImagesHistogramResponse {
-  required ImagesHistogram histogram = 1;
+ ImagesHistogram histogram = 1;
 }
 
 message ImagesGetUrlBaseRequest {
-  required string blob_key = 1;
+ string blob_key = 1;
 
-  optional bool create_secure_url = 2 [default = false];
+  optional bool create_secure_url = 2 ;
 }
 
 message ImagesGetUrlBaseResponse {
-  required string url = 1;
+ string url = 1;
 }
 
 message ImagesDeleteUrlBaseRequest {
-  required string blob_key = 1;
+ string blob_key = 1;
 }
 
 message ImagesDeleteUrlBaseResponse {
diff --git a/internal/internal.go b/internal/internal.go
index 051ea398..2c57b5fb 100644
--- a/internal/internal.go
+++ b/internal/internal.go
@@ -11,7 +11,7 @@ package internal
 import (
 	"fmt"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	remotepb "google.golang.org/appengine/internal/remote_api"
 )
diff --git a/internal/log/log_service.pb.go b/internal/log/log_service.pb.go
index 8545ac4a..0f2f2a7b 100644
--- a/internal/log/log_service.pb.go
+++ b/internal/log/log_service.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/log/log_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: log_service.proto
 
 package log
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 LogServiceError_ErrorCode int32
 
@@ -26,1288 +28,1836 @@ const (
 	LogServiceError_STORAGE_ERROR   LogServiceError_ErrorCode = 2
 )
 
-var LogServiceError_ErrorCode_name = map[int32]string{
-	0: "OK",
-	1: "INVALID_REQUEST",
-	2: "STORAGE_ERROR",
-}
-var LogServiceError_ErrorCode_value = map[string]int32{
-	"OK":              0,
-	"INVALID_REQUEST": 1,
-	"STORAGE_ERROR":   2,
-}
+// Enum value maps for LogServiceError_ErrorCode.
+var (
+	LogServiceError_ErrorCode_name = map[int32]string{
+		0: "OK",
+		1: "INVALID_REQUEST",
+		2: "STORAGE_ERROR",
+	}
+	LogServiceError_ErrorCode_value = map[string]int32{
+		"OK":              0,
+		"INVALID_REQUEST": 1,
+		"STORAGE_ERROR":   2,
+	}
+)
 
 func (x LogServiceError_ErrorCode) Enum() *LogServiceError_ErrorCode {
 	p := new(LogServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x LogServiceError_ErrorCode) String() string {
-	return proto.EnumName(LogServiceError_ErrorCode_name, int32(x))
-}
-func (x *LogServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(LogServiceError_ErrorCode_value, data, "LogServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = LogServiceError_ErrorCode(value)
-	return nil
-}
-func (LogServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{0, 0}
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type LogServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (LogServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_log_service_proto_enumTypes[0].Descriptor()
 }
 
-func (m *LogServiceError) Reset()         { *m = LogServiceError{} }
-func (m *LogServiceError) String() string { return proto.CompactTextString(m) }
-func (*LogServiceError) ProtoMessage()    {}
-func (*LogServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{0}
+func (LogServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_log_service_proto_enumTypes[0]
 }
-func (m *LogServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogServiceError.Unmarshal(m, b)
+
+func (x LogServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *LogServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogServiceError.Marshal(b, m, deterministic)
+
+// Deprecated: Use LogServiceError_ErrorCode.Descriptor instead.
+func (LogServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{0, 0}
 }
-func (dst *LogServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogServiceError.Merge(dst, src)
+
+type LogServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *LogServiceError) XXX_Size() int {
-	return xxx_messageInfo_LogServiceError.Size(m)
+
+func (x *LogServiceError) Reset() {
+	*x = LogServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *LogServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogServiceError.DiscardUnknown(m)
+
+func (x *LogServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_LogServiceError proto.InternalMessageInfo
+func (*LogServiceError) ProtoMessage() {}
 
-type UserAppLogLine struct {
-	TimestampUsec        *int64   `protobuf:"varint,1,req,name=timestamp_usec,json=timestampUsec" json:"timestamp_usec,omitempty"`
-	Level                *int64   `protobuf:"varint,2,req,name=level" json:"level,omitempty"`
-	Message              *string  `protobuf:"bytes,3,req,name=message" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *LogServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
 }
 
-func (m *UserAppLogLine) Reset()         { *m = UserAppLogLine{} }
-func (m *UserAppLogLine) String() string { return proto.CompactTextString(m) }
-func (*UserAppLogLine) ProtoMessage()    {}
-func (*UserAppLogLine) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{1}
-}
-func (m *UserAppLogLine) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UserAppLogLine.Unmarshal(m, b)
+// Deprecated: Use LogServiceError.ProtoReflect.Descriptor instead.
+func (*LogServiceError) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{0}
 }
-func (m *UserAppLogLine) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UserAppLogLine.Marshal(b, m, deterministic)
+
+type UserAppLogLine struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	TimestampUsec int64  `protobuf:"varint,1,opt,name=timestamp_usec,json=timestampUsec,proto3" json:"timestamp_usec,omitempty"`
+	Level         int64  `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"`
+	Message       string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
 }
-func (dst *UserAppLogLine) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UserAppLogLine.Merge(dst, src)
+
+func (x *UserAppLogLine) Reset() {
+	*x = UserAppLogLine{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *UserAppLogLine) XXX_Size() int {
-	return xxx_messageInfo_UserAppLogLine.Size(m)
+
+func (x *UserAppLogLine) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *UserAppLogLine) XXX_DiscardUnknown() {
-	xxx_messageInfo_UserAppLogLine.DiscardUnknown(m)
+
+func (*UserAppLogLine) ProtoMessage() {}
+
+func (x *UserAppLogLine) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
 }
 
-var xxx_messageInfo_UserAppLogLine proto.InternalMessageInfo
+// Deprecated: Use UserAppLogLine.ProtoReflect.Descriptor instead.
+func (*UserAppLogLine) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *UserAppLogLine) GetTimestampUsec() int64 {
-	if m != nil && m.TimestampUsec != nil {
-		return *m.TimestampUsec
+func (x *UserAppLogLine) GetTimestampUsec() int64 {
+	if x != nil {
+		return x.TimestampUsec
 	}
 	return 0
 }
 
-func (m *UserAppLogLine) GetLevel() int64 {
-	if m != nil && m.Level != nil {
-		return *m.Level
+func (x *UserAppLogLine) GetLevel() int64 {
+	if x != nil {
+		return x.Level
 	}
 	return 0
 }
 
-func (m *UserAppLogLine) GetMessage() string {
-	if m != nil && m.Message != nil {
-		return *m.Message
+func (x *UserAppLogLine) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
 type UserAppLogGroup struct {
-	LogLine              []*UserAppLogLine `protobuf:"bytes,2,rep,name=log_line,json=logLine" json:"log_line,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *UserAppLogGroup) Reset()         { *m = UserAppLogGroup{} }
-func (m *UserAppLogGroup) String() string { return proto.CompactTextString(m) }
-func (*UserAppLogGroup) ProtoMessage()    {}
-func (*UserAppLogGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{2}
-}
-func (m *UserAppLogGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UserAppLogGroup.Unmarshal(m, b)
+	LogLine []*UserAppLogLine `protobuf:"bytes,2,rep,name=log_line,json=logLine,proto3" json:"log_line,omitempty"`
 }
-func (m *UserAppLogGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UserAppLogGroup.Marshal(b, m, deterministic)
-}
-func (dst *UserAppLogGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UserAppLogGroup.Merge(dst, src)
+
+func (x *UserAppLogGroup) Reset() {
+	*x = UserAppLogGroup{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *UserAppLogGroup) XXX_Size() int {
-	return xxx_messageInfo_UserAppLogGroup.Size(m)
+
+func (x *UserAppLogGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *UserAppLogGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_UserAppLogGroup.DiscardUnknown(m)
+
+func (*UserAppLogGroup) ProtoMessage() {}
+
+func (x *UserAppLogGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
 }
 
-var xxx_messageInfo_UserAppLogGroup proto.InternalMessageInfo
+// Deprecated: Use UserAppLogGroup.ProtoReflect.Descriptor instead.
+func (*UserAppLogGroup) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *UserAppLogGroup) GetLogLine() []*UserAppLogLine {
-	if m != nil {
-		return m.LogLine
+func (x *UserAppLogGroup) GetLogLine() []*UserAppLogLine {
+	if x != nil {
+		return x.LogLine
 	}
 	return nil
 }
 
 type FlushRequest struct {
-	Logs                 []byte   `protobuf:"bytes,1,opt,name=logs" json:"logs,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FlushRequest) Reset()         { *m = FlushRequest{} }
-func (m *FlushRequest) String() string { return proto.CompactTextString(m) }
-func (*FlushRequest) ProtoMessage()    {}
-func (*FlushRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{3}
+	Logs []byte `protobuf:"bytes,1,opt,name=logs,proto3,oneof" json:"logs,omitempty"`
 }
-func (m *FlushRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlushRequest.Unmarshal(m, b)
-}
-func (m *FlushRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlushRequest.Marshal(b, m, deterministic)
-}
-func (dst *FlushRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlushRequest.Merge(dst, src)
+
+func (x *FlushRequest) Reset() {
+	*x = FlushRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FlushRequest) XXX_Size() int {
-	return xxx_messageInfo_FlushRequest.Size(m)
+
+func (x *FlushRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *FlushRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlushRequest.DiscardUnknown(m)
+
+func (*FlushRequest) ProtoMessage() {}
+
+func (x *FlushRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
 }
 
-var xxx_messageInfo_FlushRequest proto.InternalMessageInfo
+// Deprecated: Use FlushRequest.ProtoReflect.Descriptor instead.
+func (*FlushRequest) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *FlushRequest) GetLogs() []byte {
-	if m != nil {
-		return m.Logs
+func (x *FlushRequest) GetLogs() []byte {
+	if x != nil {
+		return x.Logs
 	}
 	return nil
 }
 
 type SetStatusRequest struct {
-	Status               *string  `protobuf:"bytes,1,req,name=status" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *SetStatusRequest) Reset()         { *m = SetStatusRequest{} }
-func (m *SetStatusRequest) String() string { return proto.CompactTextString(m) }
-func (*SetStatusRequest) ProtoMessage()    {}
-func (*SetStatusRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{4}
-}
-func (m *SetStatusRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SetStatusRequest.Unmarshal(m, b)
-}
-func (m *SetStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SetStatusRequest.Marshal(b, m, deterministic)
+	Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
 }
-func (dst *SetStatusRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SetStatusRequest.Merge(dst, src)
+
+func (x *SetStatusRequest) Reset() {
+	*x = SetStatusRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SetStatusRequest) XXX_Size() int {
-	return xxx_messageInfo_SetStatusRequest.Size(m)
+
+func (x *SetStatusRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SetStatusRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SetStatusRequest.DiscardUnknown(m)
+
+func (*SetStatusRequest) ProtoMessage() {}
+
+func (x *SetStatusRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
 }
 
-var xxx_messageInfo_SetStatusRequest proto.InternalMessageInfo
+// Deprecated: Use SetStatusRequest.ProtoReflect.Descriptor instead.
+func (*SetStatusRequest) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{4}
+}
 
-func (m *SetStatusRequest) GetStatus() string {
-	if m != nil && m.Status != nil {
-		return *m.Status
+func (x *SetStatusRequest) GetStatus() string {
+	if x != nil {
+		return x.Status
 	}
 	return ""
 }
 
 type LogOffset struct {
-	RequestId            []byte   `protobuf:"bytes,1,opt,name=request_id,json=requestId" json:"request_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *LogOffset) Reset()         { *m = LogOffset{} }
-func (m *LogOffset) String() string { return proto.CompactTextString(m) }
-func (*LogOffset) ProtoMessage()    {}
-func (*LogOffset) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{5}
-}
-func (m *LogOffset) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogOffset.Unmarshal(m, b)
-}
-func (m *LogOffset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogOffset.Marshal(b, m, deterministic)
+	RequestId []byte `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3,oneof" json:"request_id,omitempty"`
 }
-func (dst *LogOffset) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogOffset.Merge(dst, src)
+
+func (x *LogOffset) Reset() {
+	*x = LogOffset{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *LogOffset) XXX_Size() int {
-	return xxx_messageInfo_LogOffset.Size(m)
+
+func (x *LogOffset) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *LogOffset) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogOffset.DiscardUnknown(m)
+
+func (*LogOffset) ProtoMessage() {}
+
+func (x *LogOffset) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
 }
 
-var xxx_messageInfo_LogOffset proto.InternalMessageInfo
+// Deprecated: Use LogOffset.ProtoReflect.Descriptor instead.
+func (*LogOffset) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *LogOffset) GetRequestId() []byte {
-	if m != nil {
-		return m.RequestId
+func (x *LogOffset) GetRequestId() []byte {
+	if x != nil {
+		return x.RequestId
 	}
 	return nil
 }
 
 type LogLine struct {
-	Time                 *int64   `protobuf:"varint,1,req,name=time" json:"time,omitempty"`
-	Level                *int32   `protobuf:"varint,2,req,name=level" json:"level,omitempty"`
-	LogMessage           *string  `protobuf:"bytes,3,req,name=log_message,json=logMessage" json:"log_message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *LogLine) Reset()         { *m = LogLine{} }
-func (m *LogLine) String() string { return proto.CompactTextString(m) }
-func (*LogLine) ProtoMessage()    {}
-func (*LogLine) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{6}
-}
-func (m *LogLine) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogLine.Unmarshal(m, b)
+	Time       int64  `protobuf:"varint,1,opt,name=time,proto3" json:"time,omitempty"`
+	Level      int32  `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"`
+	LogMessage string `protobuf:"bytes,3,opt,name=log_message,json=logMessage,proto3" json:"log_message,omitempty"`
 }
-func (m *LogLine) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogLine.Marshal(b, m, deterministic)
-}
-func (dst *LogLine) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogLine.Merge(dst, src)
+
+func (x *LogLine) Reset() {
+	*x = LogLine{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *LogLine) XXX_Size() int {
-	return xxx_messageInfo_LogLine.Size(m)
+
+func (x *LogLine) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *LogLine) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogLine.DiscardUnknown(m)
+
+func (*LogLine) ProtoMessage() {}
+
+func (x *LogLine) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
 }
 
-var xxx_messageInfo_LogLine proto.InternalMessageInfo
+// Deprecated: Use LogLine.ProtoReflect.Descriptor instead.
+func (*LogLine) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{6}
+}
 
-func (m *LogLine) GetTime() int64 {
-	if m != nil && m.Time != nil {
-		return *m.Time
+func (x *LogLine) GetTime() int64 {
+	if x != nil {
+		return x.Time
 	}
 	return 0
 }
 
-func (m *LogLine) GetLevel() int32 {
-	if m != nil && m.Level != nil {
-		return *m.Level
+func (x *LogLine) GetLevel() int32 {
+	if x != nil {
+		return x.Level
 	}
 	return 0
 }
 
-func (m *LogLine) GetLogMessage() string {
-	if m != nil && m.LogMessage != nil {
-		return *m.LogMessage
+func (x *LogLine) GetLogMessage() string {
+	if x != nil {
+		return x.LogMessage
 	}
 	return ""
 }
 
 type RequestLog struct {
-	AppId                   *string    `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
-	ModuleId                *string    `protobuf:"bytes,37,opt,name=module_id,json=moduleId,def=default" json:"module_id,omitempty"`
-	VersionId               *string    `protobuf:"bytes,2,req,name=version_id,json=versionId" json:"version_id,omitempty"`
-	RequestId               []byte     `protobuf:"bytes,3,req,name=request_id,json=requestId" json:"request_id,omitempty"`
-	Offset                  *LogOffset `protobuf:"bytes,35,opt,name=offset" json:"offset,omitempty"`
-	Ip                      *string    `protobuf:"bytes,4,req,name=ip" json:"ip,omitempty"`
-	Nickname                *string    `protobuf:"bytes,5,opt,name=nickname" json:"nickname,omitempty"`
-	StartTime               *int64     `protobuf:"varint,6,req,name=start_time,json=startTime" json:"start_time,omitempty"`
-	EndTime                 *int64     `protobuf:"varint,7,req,name=end_time,json=endTime" json:"end_time,omitempty"`
-	Latency                 *int64     `protobuf:"varint,8,req,name=latency" json:"latency,omitempty"`
-	Mcycles                 *int64     `protobuf:"varint,9,req,name=mcycles" json:"mcycles,omitempty"`
-	Method                  *string    `protobuf:"bytes,10,req,name=method" json:"method,omitempty"`
-	Resource                *string    `protobuf:"bytes,11,req,name=resource" json:"resource,omitempty"`
-	HttpVersion             *string    `protobuf:"bytes,12,req,name=http_version,json=httpVersion" json:"http_version,omitempty"`
-	Status                  *int32     `protobuf:"varint,13,req,name=status" json:"status,omitempty"`
-	ResponseSize            *int64     `protobuf:"varint,14,req,name=response_size,json=responseSize" json:"response_size,omitempty"`
-	Referrer                *string    `protobuf:"bytes,15,opt,name=referrer" json:"referrer,omitempty"`
-	UserAgent               *string    `protobuf:"bytes,16,opt,name=user_agent,json=userAgent" json:"user_agent,omitempty"`
-	UrlMapEntry             *string    `protobuf:"bytes,17,req,name=url_map_entry,json=urlMapEntry" json:"url_map_entry,omitempty"`
-	Combined                *string    `protobuf:"bytes,18,req,name=combined" json:"combined,omitempty"`
-	ApiMcycles              *int64     `protobuf:"varint,19,opt,name=api_mcycles,json=apiMcycles" json:"api_mcycles,omitempty"`
-	Host                    *string    `protobuf:"bytes,20,opt,name=host" json:"host,omitempty"`
-	Cost                    *float64   `protobuf:"fixed64,21,opt,name=cost" json:"cost,omitempty"`
-	TaskQueueName           *string    `protobuf:"bytes,22,opt,name=task_queue_name,json=taskQueueName" json:"task_queue_name,omitempty"`
-	TaskName                *string    `protobuf:"bytes,23,opt,name=task_name,json=taskName" json:"task_name,omitempty"`
-	WasLoadingRequest       *bool      `protobuf:"varint,24,opt,name=was_loading_request,json=wasLoadingRequest" json:"was_loading_request,omitempty"`
-	PendingTime             *int64     `protobuf:"varint,25,opt,name=pending_time,json=pendingTime" json:"pending_time,omitempty"`
-	ReplicaIndex            *int32     `protobuf:"varint,26,opt,name=replica_index,json=replicaIndex,def=-1" json:"replica_index,omitempty"`
-	Finished                *bool      `protobuf:"varint,27,opt,name=finished,def=1" json:"finished,omitempty"`
-	CloneKey                []byte     `protobuf:"bytes,28,opt,name=clone_key,json=cloneKey" json:"clone_key,omitempty"`
-	Line                    []*LogLine `protobuf:"bytes,29,rep,name=line" json:"line,omitempty"`
-	LinesIncomplete         *bool      `protobuf:"varint,36,opt,name=lines_incomplete,json=linesIncomplete" json:"lines_incomplete,omitempty"`
-	AppEngineRelease        []byte     `protobuf:"bytes,38,opt,name=app_engine_release,json=appEngineRelease" json:"app_engine_release,omitempty"`
-	ExitReason              *int32     `protobuf:"varint,30,opt,name=exit_reason,json=exitReason" json:"exit_reason,omitempty"`
-	WasThrottledForTime     *bool      `protobuf:"varint,31,opt,name=was_throttled_for_time,json=wasThrottledForTime" json:"was_throttled_for_time,omitempty"`
-	WasThrottledForRequests *bool      `protobuf:"varint,32,opt,name=was_throttled_for_requests,json=wasThrottledForRequests" json:"was_throttled_for_requests,omitempty"`
-	ThrottledTime           *int64     `protobuf:"varint,33,opt,name=throttled_time,json=throttledTime" json:"throttled_time,omitempty"`
-	ServerName              []byte     `protobuf:"bytes,34,opt,name=server_name,json=serverName" json:"server_name,omitempty"`
-	XXX_NoUnkeyedLiteral    struct{}   `json:"-"`
-	XXX_unrecognized        []byte     `json:"-"`
-	XXX_sizecache           int32      `json:"-"`
-}
-
-func (m *RequestLog) Reset()         { *m = RequestLog{} }
-func (m *RequestLog) String() string { return proto.CompactTextString(m) }
-func (*RequestLog) ProtoMessage()    {}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId                   string     `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+	ModuleId                *string    `protobuf:"bytes,37,opt,name=module_id,json=moduleId,proto3,oneof" json:"module_id,omitempty"`
+	VersionId               string     `protobuf:"bytes,2,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"`
+	RequestId               []byte     `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+	Offset                  *LogOffset `protobuf:"bytes,35,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+	Ip                      string     `protobuf:"bytes,4,opt,name=ip,proto3" json:"ip,omitempty"`
+	Nickname                *string    `protobuf:"bytes,5,opt,name=nickname,proto3,oneof" json:"nickname,omitempty"`
+	StartTime               int64      `protobuf:"varint,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
+	EndTime                 int64      `protobuf:"varint,7,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
+	Latency                 int64      `protobuf:"varint,8,opt,name=latency,proto3" json:"latency,omitempty"`
+	Mcycles                 int64      `protobuf:"varint,9,opt,name=mcycles,proto3" json:"mcycles,omitempty"`
+	Method                  string     `protobuf:"bytes,10,opt,name=method,proto3" json:"method,omitempty"`
+	Resource                string     `protobuf:"bytes,11,opt,name=resource,proto3" json:"resource,omitempty"`
+	HttpVersion             string     `protobuf:"bytes,12,opt,name=http_version,json=httpVersion,proto3" json:"http_version,omitempty"`
+	Status                  int32      `protobuf:"varint,13,opt,name=status,proto3" json:"status,omitempty"`
+	ResponseSize            int64      `protobuf:"varint,14,opt,name=response_size,json=responseSize,proto3" json:"response_size,omitempty"`
+	Referrer                *string    `protobuf:"bytes,15,opt,name=referrer,proto3,oneof" json:"referrer,omitempty"`
+	UserAgent               *string    `protobuf:"bytes,16,opt,name=user_agent,json=userAgent,proto3,oneof" json:"user_agent,omitempty"`
+	UrlMapEntry             string     `protobuf:"bytes,17,opt,name=url_map_entry,json=urlMapEntry,proto3" json:"url_map_entry,omitempty"`
+	Combined                string     `protobuf:"bytes,18,opt,name=combined,proto3" json:"combined,omitempty"`
+	ApiMcycles              *int64     `protobuf:"varint,19,opt,name=api_mcycles,json=apiMcycles,proto3,oneof" json:"api_mcycles,omitempty"`
+	Host                    *string    `protobuf:"bytes,20,opt,name=host,proto3,oneof" json:"host,omitempty"`
+	Cost                    *float64   `protobuf:"fixed64,21,opt,name=cost,proto3,oneof" json:"cost,omitempty"`
+	TaskQueueName           *string    `protobuf:"bytes,22,opt,name=task_queue_name,json=taskQueueName,proto3,oneof" json:"task_queue_name,omitempty"`
+	TaskName                *string    `protobuf:"bytes,23,opt,name=task_name,json=taskName,proto3,oneof" json:"task_name,omitempty"`
+	WasLoadingRequest       *bool      `protobuf:"varint,24,opt,name=was_loading_request,json=wasLoadingRequest,proto3,oneof" json:"was_loading_request,omitempty"`
+	PendingTime             *int64     `protobuf:"varint,25,opt,name=pending_time,json=pendingTime,proto3,oneof" json:"pending_time,omitempty"`
+	ReplicaIndex            *int32     `protobuf:"varint,26,opt,name=replica_index,json=replicaIndex,proto3,oneof" json:"replica_index,omitempty"`
+	Finished                *bool      `protobuf:"varint,27,opt,name=finished,proto3,oneof" json:"finished,omitempty"`
+	CloneKey                []byte     `protobuf:"bytes,28,opt,name=clone_key,json=cloneKey,proto3,oneof" json:"clone_key,omitempty"`
+	Line                    []*LogLine `protobuf:"bytes,29,rep,name=line,proto3" json:"line,omitempty"`
+	LinesIncomplete         *bool      `protobuf:"varint,36,opt,name=lines_incomplete,json=linesIncomplete,proto3,oneof" json:"lines_incomplete,omitempty"`
+	AppEngineRelease        []byte     `protobuf:"bytes,38,opt,name=app_engine_release,json=appEngineRelease,proto3,oneof" json:"app_engine_release,omitempty"`
+	ExitReason              *int32     `protobuf:"varint,30,opt,name=exit_reason,json=exitReason,proto3,oneof" json:"exit_reason,omitempty"`
+	WasThrottledForTime     *bool      `protobuf:"varint,31,opt,name=was_throttled_for_time,json=wasThrottledForTime,proto3,oneof" json:"was_throttled_for_time,omitempty"`
+	WasThrottledForRequests *bool      `protobuf:"varint,32,opt,name=was_throttled_for_requests,json=wasThrottledForRequests,proto3,oneof" json:"was_throttled_for_requests,omitempty"`
+	ThrottledTime           *int64     `protobuf:"varint,33,opt,name=throttled_time,json=throttledTime,proto3,oneof" json:"throttled_time,omitempty"`
+	ServerName              []byte     `protobuf:"bytes,34,opt,name=server_name,json=serverName,proto3,oneof" json:"server_name,omitempty"`
+}
+
+func (x *RequestLog) Reset() {
+	*x = RequestLog{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RequestLog) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RequestLog) ProtoMessage() {}
+
+func (x *RequestLog) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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 RequestLog.ProtoReflect.Descriptor instead.
 func (*RequestLog) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{7}
-}
-func (m *RequestLog) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RequestLog.Unmarshal(m, b)
-}
-func (m *RequestLog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RequestLog.Marshal(b, m, deterministic)
-}
-func (dst *RequestLog) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RequestLog.Merge(dst, src)
+	return file_log_service_proto_rawDescGZIP(), []int{7}
 }
-func (m *RequestLog) XXX_Size() int {
-	return xxx_messageInfo_RequestLog.Size(m)
-}
-func (m *RequestLog) XXX_DiscardUnknown() {
-	xxx_messageInfo_RequestLog.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RequestLog proto.InternalMessageInfo
 
-const Default_RequestLog_ModuleId string = "default"
-const Default_RequestLog_ReplicaIndex int32 = -1
-const Default_RequestLog_Finished bool = true
-
-func (m *RequestLog) GetAppId() string {
-	if m != nil && m.AppId != nil {
-		return *m.AppId
+func (x *RequestLog) GetAppId() string {
+	if x != nil {
+		return x.AppId
 	}
 	return ""
 }
 
-func (m *RequestLog) GetModuleId() string {
-	if m != nil && m.ModuleId != nil {
-		return *m.ModuleId
+func (x *RequestLog) GetModuleId() string {
+	if x != nil && x.ModuleId != nil {
+		return *x.ModuleId
 	}
-	return Default_RequestLog_ModuleId
+	return ""
 }
 
-func (m *RequestLog) GetVersionId() string {
-	if m != nil && m.VersionId != nil {
-		return *m.VersionId
+func (x *RequestLog) GetVersionId() string {
+	if x != nil {
+		return x.VersionId
 	}
 	return ""
 }
 
-func (m *RequestLog) GetRequestId() []byte {
-	if m != nil {
-		return m.RequestId
+func (x *RequestLog) GetRequestId() []byte {
+	if x != nil {
+		return x.RequestId
 	}
 	return nil
 }
 
-func (m *RequestLog) GetOffset() *LogOffset {
-	if m != nil {
-		return m.Offset
+func (x *RequestLog) GetOffset() *LogOffset {
+	if x != nil {
+		return x.Offset
 	}
 	return nil
 }
 
-func (m *RequestLog) GetIp() string {
-	if m != nil && m.Ip != nil {
-		return *m.Ip
+func (x *RequestLog) GetIp() string {
+	if x != nil {
+		return x.Ip
 	}
 	return ""
 }
 
-func (m *RequestLog) GetNickname() string {
-	if m != nil && m.Nickname != nil {
-		return *m.Nickname
+func (x *RequestLog) GetNickname() string {
+	if x != nil && x.Nickname != nil {
+		return *x.Nickname
 	}
 	return ""
 }
 
-func (m *RequestLog) GetStartTime() int64 {
-	if m != nil && m.StartTime != nil {
-		return *m.StartTime
+func (x *RequestLog) GetStartTime() int64 {
+	if x != nil {
+		return x.StartTime
 	}
 	return 0
 }
 
-func (m *RequestLog) GetEndTime() int64 {
-	if m != nil && m.EndTime != nil {
-		return *m.EndTime
+func (x *RequestLog) GetEndTime() int64 {
+	if x != nil {
+		return x.EndTime
 	}
 	return 0
 }
 
-func (m *RequestLog) GetLatency() int64 {
-	if m != nil && m.Latency != nil {
-		return *m.Latency
+func (x *RequestLog) GetLatency() int64 {
+	if x != nil {
+		return x.Latency
 	}
 	return 0
 }
 
-func (m *RequestLog) GetMcycles() int64 {
-	if m != nil && m.Mcycles != nil {
-		return *m.Mcycles
+func (x *RequestLog) GetMcycles() int64 {
+	if x != nil {
+		return x.Mcycles
 	}
 	return 0
 }
 
-func (m *RequestLog) GetMethod() string {
-	if m != nil && m.Method != nil {
-		return *m.Method
+func (x *RequestLog) GetMethod() string {
+	if x != nil {
+		return x.Method
 	}
 	return ""
 }
 
-func (m *RequestLog) GetResource() string {
-	if m != nil && m.Resource != nil {
-		return *m.Resource
+func (x *RequestLog) GetResource() string {
+	if x != nil {
+		return x.Resource
 	}
 	return ""
 }
 
-func (m *RequestLog) GetHttpVersion() string {
-	if m != nil && m.HttpVersion != nil {
-		return *m.HttpVersion
+func (x *RequestLog) GetHttpVersion() string {
+	if x != nil {
+		return x.HttpVersion
 	}
 	return ""
 }
 
-func (m *RequestLog) GetStatus() int32 {
-	if m != nil && m.Status != nil {
-		return *m.Status
+func (x *RequestLog) GetStatus() int32 {
+	if x != nil {
+		return x.Status
 	}
 	return 0
 }
 
-func (m *RequestLog) GetResponseSize() int64 {
-	if m != nil && m.ResponseSize != nil {
-		return *m.ResponseSize
+func (x *RequestLog) GetResponseSize() int64 {
+	if x != nil {
+		return x.ResponseSize
 	}
 	return 0
 }
 
-func (m *RequestLog) GetReferrer() string {
-	if m != nil && m.Referrer != nil {
-		return *m.Referrer
+func (x *RequestLog) GetReferrer() string {
+	if x != nil && x.Referrer != nil {
+		return *x.Referrer
 	}
 	return ""
 }
 
-func (m *RequestLog) GetUserAgent() string {
-	if m != nil && m.UserAgent != nil {
-		return *m.UserAgent
+func (x *RequestLog) GetUserAgent() string {
+	if x != nil && x.UserAgent != nil {
+		return *x.UserAgent
 	}
 	return ""
 }
 
-func (m *RequestLog) GetUrlMapEntry() string {
-	if m != nil && m.UrlMapEntry != nil {
-		return *m.UrlMapEntry
+func (x *RequestLog) GetUrlMapEntry() string {
+	if x != nil {
+		return x.UrlMapEntry
 	}
 	return ""
 }
 
-func (m *RequestLog) GetCombined() string {
-	if m != nil && m.Combined != nil {
-		return *m.Combined
+func (x *RequestLog) GetCombined() string {
+	if x != nil {
+		return x.Combined
 	}
 	return ""
 }
 
-func (m *RequestLog) GetApiMcycles() int64 {
-	if m != nil && m.ApiMcycles != nil {
-		return *m.ApiMcycles
+func (x *RequestLog) GetApiMcycles() int64 {
+	if x != nil && x.ApiMcycles != nil {
+		return *x.ApiMcycles
 	}
 	return 0
 }
 
-func (m *RequestLog) GetHost() string {
-	if m != nil && m.Host != nil {
-		return *m.Host
+func (x *RequestLog) GetHost() string {
+	if x != nil && x.Host != nil {
+		return *x.Host
 	}
 	return ""
 }
 
-func (m *RequestLog) GetCost() float64 {
-	if m != nil && m.Cost != nil {
-		return *m.Cost
+func (x *RequestLog) GetCost() float64 {
+	if x != nil && x.Cost != nil {
+		return *x.Cost
 	}
 	return 0
 }
 
-func (m *RequestLog) GetTaskQueueName() string {
-	if m != nil && m.TaskQueueName != nil {
-		return *m.TaskQueueName
+func (x *RequestLog) GetTaskQueueName() string {
+	if x != nil && x.TaskQueueName != nil {
+		return *x.TaskQueueName
 	}
 	return ""
 }
 
-func (m *RequestLog) GetTaskName() string {
-	if m != nil && m.TaskName != nil {
-		return *m.TaskName
+func (x *RequestLog) GetTaskName() string {
+	if x != nil && x.TaskName != nil {
+		return *x.TaskName
 	}
 	return ""
 }
 
-func (m *RequestLog) GetWasLoadingRequest() bool {
-	if m != nil && m.WasLoadingRequest != nil {
-		return *m.WasLoadingRequest
+func (x *RequestLog) GetWasLoadingRequest() bool {
+	if x != nil && x.WasLoadingRequest != nil {
+		return *x.WasLoadingRequest
 	}
 	return false
 }
 
-func (m *RequestLog) GetPendingTime() int64 {
-	if m != nil && m.PendingTime != nil {
-		return *m.PendingTime
+func (x *RequestLog) GetPendingTime() int64 {
+	if x != nil && x.PendingTime != nil {
+		return *x.PendingTime
 	}
 	return 0
 }
 
-func (m *RequestLog) GetReplicaIndex() int32 {
-	if m != nil && m.ReplicaIndex != nil {
-		return *m.ReplicaIndex
+func (x *RequestLog) GetReplicaIndex() int32 {
+	if x != nil && x.ReplicaIndex != nil {
+		return *x.ReplicaIndex
 	}
-	return Default_RequestLog_ReplicaIndex
+	return 0
 }
 
-func (m *RequestLog) GetFinished() bool {
-	if m != nil && m.Finished != nil {
-		return *m.Finished
+func (x *RequestLog) GetFinished() bool {
+	if x != nil && x.Finished != nil {
+		return *x.Finished
 	}
-	return Default_RequestLog_Finished
+	return false
 }
 
-func (m *RequestLog) GetCloneKey() []byte {
-	if m != nil {
-		return m.CloneKey
+func (x *RequestLog) GetCloneKey() []byte {
+	if x != nil {
+		return x.CloneKey
 	}
 	return nil
 }
 
-func (m *RequestLog) GetLine() []*LogLine {
-	if m != nil {
-		return m.Line
+func (x *RequestLog) GetLine() []*LogLine {
+	if x != nil {
+		return x.Line
 	}
 	return nil
 }
 
-func (m *RequestLog) GetLinesIncomplete() bool {
-	if m != nil && m.LinesIncomplete != nil {
-		return *m.LinesIncomplete
+func (x *RequestLog) GetLinesIncomplete() bool {
+	if x != nil && x.LinesIncomplete != nil {
+		return *x.LinesIncomplete
 	}
 	return false
 }
 
-func (m *RequestLog) GetAppEngineRelease() []byte {
-	if m != nil {
-		return m.AppEngineRelease
+func (x *RequestLog) GetAppEngineRelease() []byte {
+	if x != nil {
+		return x.AppEngineRelease
 	}
 	return nil
 }
 
-func (m *RequestLog) GetExitReason() int32 {
-	if m != nil && m.ExitReason != nil {
-		return *m.ExitReason
+func (x *RequestLog) GetExitReason() int32 {
+	if x != nil && x.ExitReason != nil {
+		return *x.ExitReason
 	}
 	return 0
 }
 
-func (m *RequestLog) GetWasThrottledForTime() bool {
-	if m != nil && m.WasThrottledForTime != nil {
-		return *m.WasThrottledForTime
+func (x *RequestLog) GetWasThrottledForTime() bool {
+	if x != nil && x.WasThrottledForTime != nil {
+		return *x.WasThrottledForTime
 	}
 	return false
 }
 
-func (m *RequestLog) GetWasThrottledForRequests() bool {
-	if m != nil && m.WasThrottledForRequests != nil {
-		return *m.WasThrottledForRequests
+func (x *RequestLog) GetWasThrottledForRequests() bool {
+	if x != nil && x.WasThrottledForRequests != nil {
+		return *x.WasThrottledForRequests
 	}
 	return false
 }
 
-func (m *RequestLog) GetThrottledTime() int64 {
-	if m != nil && m.ThrottledTime != nil {
-		return *m.ThrottledTime
+func (x *RequestLog) GetThrottledTime() int64 {
+	if x != nil && x.ThrottledTime != nil {
+		return *x.ThrottledTime
 	}
 	return 0
 }
 
-func (m *RequestLog) GetServerName() []byte {
-	if m != nil {
-		return m.ServerName
+func (x *RequestLog) GetServerName() []byte {
+	if x != nil {
+		return x.ServerName
 	}
 	return nil
 }
 
 type LogModuleVersion struct {
-	ModuleId             *string  `protobuf:"bytes,1,opt,name=module_id,json=moduleId,def=default" json:"module_id,omitempty"`
-	VersionId            *string  `protobuf:"bytes,2,opt,name=version_id,json=versionId" json:"version_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *LogModuleVersion) Reset()         { *m = LogModuleVersion{} }
-func (m *LogModuleVersion) String() string { return proto.CompactTextString(m) }
-func (*LogModuleVersion) ProtoMessage()    {}
-func (*LogModuleVersion) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{8}
-}
-func (m *LogModuleVersion) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogModuleVersion.Unmarshal(m, b)
-}
-func (m *LogModuleVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogModuleVersion.Marshal(b, m, deterministic)
+	ModuleId  *string `protobuf:"bytes,1,opt,name=module_id,json=moduleId,proto3,oneof" json:"module_id,omitempty"`
+	VersionId *string `protobuf:"bytes,2,opt,name=version_id,json=versionId,proto3,oneof" json:"version_id,omitempty"`
 }
-func (dst *LogModuleVersion) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogModuleVersion.Merge(dst, src)
-}
-func (m *LogModuleVersion) XXX_Size() int {
-	return xxx_messageInfo_LogModuleVersion.Size(m)
+
+func (x *LogModuleVersion) Reset() {
+	*x = LogModuleVersion{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *LogModuleVersion) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogModuleVersion.DiscardUnknown(m)
+
+func (x *LogModuleVersion) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_LogModuleVersion proto.InternalMessageInfo
+func (*LogModuleVersion) ProtoMessage() {}
+
+func (x *LogModuleVersion) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
+}
 
-const Default_LogModuleVersion_ModuleId string = "default"
+// Deprecated: Use LogModuleVersion.ProtoReflect.Descriptor instead.
+func (*LogModuleVersion) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{8}
+}
 
-func (m *LogModuleVersion) GetModuleId() string {
-	if m != nil && m.ModuleId != nil {
-		return *m.ModuleId
+func (x *LogModuleVersion) GetModuleId() string {
+	if x != nil && x.ModuleId != nil {
+		return *x.ModuleId
 	}
-	return Default_LogModuleVersion_ModuleId
+	return ""
 }
 
-func (m *LogModuleVersion) GetVersionId() string {
-	if m != nil && m.VersionId != nil {
-		return *m.VersionId
+func (x *LogModuleVersion) GetVersionId() string {
+	if x != nil && x.VersionId != nil {
+		return *x.VersionId
 	}
 	return ""
 }
 
 type LogReadRequest struct {
-	AppId                *string             `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
-	VersionId            []string            `protobuf:"bytes,2,rep,name=version_id,json=versionId" json:"version_id,omitempty"`
-	ModuleVersion        []*LogModuleVersion `protobuf:"bytes,19,rep,name=module_version,json=moduleVersion" json:"module_version,omitempty"`
-	StartTime            *int64              `protobuf:"varint,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
-	EndTime              *int64              `protobuf:"varint,4,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
-	Offset               *LogOffset          `protobuf:"bytes,5,opt,name=offset" json:"offset,omitempty"`
-	RequestId            [][]byte            `protobuf:"bytes,6,rep,name=request_id,json=requestId" json:"request_id,omitempty"`
-	MinimumLogLevel      *int32              `protobuf:"varint,7,opt,name=minimum_log_level,json=minimumLogLevel" json:"minimum_log_level,omitempty"`
-	IncludeIncomplete    *bool               `protobuf:"varint,8,opt,name=include_incomplete,json=includeIncomplete" json:"include_incomplete,omitempty"`
-	Count                *int64              `protobuf:"varint,9,opt,name=count" json:"count,omitempty"`
-	CombinedLogRegex     *string             `protobuf:"bytes,14,opt,name=combined_log_regex,json=combinedLogRegex" json:"combined_log_regex,omitempty"`
-	HostRegex            *string             `protobuf:"bytes,15,opt,name=host_regex,json=hostRegex" json:"host_regex,omitempty"`
-	ReplicaIndex         *int32              `protobuf:"varint,16,opt,name=replica_index,json=replicaIndex" json:"replica_index,omitempty"`
-	IncludeAppLogs       *bool               `protobuf:"varint,10,opt,name=include_app_logs,json=includeAppLogs" json:"include_app_logs,omitempty"`
-	AppLogsPerRequest    *int32              `protobuf:"varint,17,opt,name=app_logs_per_request,json=appLogsPerRequest" json:"app_logs_per_request,omitempty"`
-	IncludeHost          *bool               `protobuf:"varint,11,opt,name=include_host,json=includeHost" json:"include_host,omitempty"`
-	IncludeAll           *bool               `protobuf:"varint,12,opt,name=include_all,json=includeAll" json:"include_all,omitempty"`
-	CacheIterator        *bool               `protobuf:"varint,13,opt,name=cache_iterator,json=cacheIterator" json:"cache_iterator,omitempty"`
-	NumShards            *int32              `protobuf:"varint,18,opt,name=num_shards,json=numShards" json:"num_shards,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *LogReadRequest) Reset()         { *m = LogReadRequest{} }
-func (m *LogReadRequest) String() string { return proto.CompactTextString(m) }
-func (*LogReadRequest) ProtoMessage()    {}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId             string              `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+	VersionId         []string            `protobuf:"bytes,2,rep,name=version_id,json=versionId,proto3" json:"version_id,omitempty"`
+	ModuleVersion     []*LogModuleVersion `protobuf:"bytes,19,rep,name=module_version,json=moduleVersion,proto3" json:"module_version,omitempty"`
+	StartTime         *int64              `protobuf:"varint,3,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+	EndTime           *int64              `protobuf:"varint,4,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+	Offset            *LogOffset          `protobuf:"bytes,5,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+	RequestId         [][]byte            `protobuf:"bytes,6,rep,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+	MinimumLogLevel   *int32              `protobuf:"varint,7,opt,name=minimum_log_level,json=minimumLogLevel,proto3,oneof" json:"minimum_log_level,omitempty"`
+	IncludeIncomplete *bool               `protobuf:"varint,8,opt,name=include_incomplete,json=includeIncomplete,proto3,oneof" json:"include_incomplete,omitempty"`
+	Count             *int64              `protobuf:"varint,9,opt,name=count,proto3,oneof" json:"count,omitempty"`
+	CombinedLogRegex  *string             `protobuf:"bytes,14,opt,name=combined_log_regex,json=combinedLogRegex,proto3,oneof" json:"combined_log_regex,omitempty"`
+	HostRegex         *string             `protobuf:"bytes,15,opt,name=host_regex,json=hostRegex,proto3,oneof" json:"host_regex,omitempty"`
+	ReplicaIndex      *int32              `protobuf:"varint,16,opt,name=replica_index,json=replicaIndex,proto3,oneof" json:"replica_index,omitempty"`
+	IncludeAppLogs    *bool               `protobuf:"varint,10,opt,name=include_app_logs,json=includeAppLogs,proto3,oneof" json:"include_app_logs,omitempty"`
+	AppLogsPerRequest *int32              `protobuf:"varint,17,opt,name=app_logs_per_request,json=appLogsPerRequest,proto3,oneof" json:"app_logs_per_request,omitempty"`
+	IncludeHost       *bool               `protobuf:"varint,11,opt,name=include_host,json=includeHost,proto3,oneof" json:"include_host,omitempty"`
+	IncludeAll        *bool               `protobuf:"varint,12,opt,name=include_all,json=includeAll,proto3,oneof" json:"include_all,omitempty"`
+	CacheIterator     *bool               `protobuf:"varint,13,opt,name=cache_iterator,json=cacheIterator,proto3,oneof" json:"cache_iterator,omitempty"`
+	NumShards         *int32              `protobuf:"varint,18,opt,name=num_shards,json=numShards,proto3,oneof" json:"num_shards,omitempty"`
+}
+
+func (x *LogReadRequest) Reset() {
+	*x = LogReadRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LogReadRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogReadRequest) ProtoMessage() {}
+
+func (x *LogReadRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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 LogReadRequest.ProtoReflect.Descriptor instead.
 func (*LogReadRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{9}
-}
-func (m *LogReadRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogReadRequest.Unmarshal(m, b)
-}
-func (m *LogReadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogReadRequest.Marshal(b, m, deterministic)
-}
-func (dst *LogReadRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogReadRequest.Merge(dst, src)
-}
-func (m *LogReadRequest) XXX_Size() int {
-	return xxx_messageInfo_LogReadRequest.Size(m)
-}
-func (m *LogReadRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogReadRequest.DiscardUnknown(m)
+	return file_log_service_proto_rawDescGZIP(), []int{9}
 }
 
-var xxx_messageInfo_LogReadRequest proto.InternalMessageInfo
-
-func (m *LogReadRequest) GetAppId() string {
-	if m != nil && m.AppId != nil {
-		return *m.AppId
+func (x *LogReadRequest) GetAppId() string {
+	if x != nil {
+		return x.AppId
 	}
 	return ""
 }
 
-func (m *LogReadRequest) GetVersionId() []string {
-	if m != nil {
-		return m.VersionId
+func (x *LogReadRequest) GetVersionId() []string {
+	if x != nil {
+		return x.VersionId
 	}
 	return nil
 }
 
-func (m *LogReadRequest) GetModuleVersion() []*LogModuleVersion {
-	if m != nil {
-		return m.ModuleVersion
+func (x *LogReadRequest) GetModuleVersion() []*LogModuleVersion {
+	if x != nil {
+		return x.ModuleVersion
 	}
 	return nil
 }
 
-func (m *LogReadRequest) GetStartTime() int64 {
-	if m != nil && m.StartTime != nil {
-		return *m.StartTime
+func (x *LogReadRequest) GetStartTime() int64 {
+	if x != nil && x.StartTime != nil {
+		return *x.StartTime
 	}
 	return 0
 }
 
-func (m *LogReadRequest) GetEndTime() int64 {
-	if m != nil && m.EndTime != nil {
-		return *m.EndTime
+func (x *LogReadRequest) GetEndTime() int64 {
+	if x != nil && x.EndTime != nil {
+		return *x.EndTime
 	}
 	return 0
 }
 
-func (m *LogReadRequest) GetOffset() *LogOffset {
-	if m != nil {
-		return m.Offset
+func (x *LogReadRequest) GetOffset() *LogOffset {
+	if x != nil {
+		return x.Offset
 	}
 	return nil
 }
 
-func (m *LogReadRequest) GetRequestId() [][]byte {
-	if m != nil {
-		return m.RequestId
+func (x *LogReadRequest) GetRequestId() [][]byte {
+	if x != nil {
+		return x.RequestId
 	}
 	return nil
 }
 
-func (m *LogReadRequest) GetMinimumLogLevel() int32 {
-	if m != nil && m.MinimumLogLevel != nil {
-		return *m.MinimumLogLevel
+func (x *LogReadRequest) GetMinimumLogLevel() int32 {
+	if x != nil && x.MinimumLogLevel != nil {
+		return *x.MinimumLogLevel
 	}
 	return 0
 }
 
-func (m *LogReadRequest) GetIncludeIncomplete() bool {
-	if m != nil && m.IncludeIncomplete != nil {
-		return *m.IncludeIncomplete
+func (x *LogReadRequest) GetIncludeIncomplete() bool {
+	if x != nil && x.IncludeIncomplete != nil {
+		return *x.IncludeIncomplete
 	}
 	return false
 }
 
-func (m *LogReadRequest) GetCount() int64 {
-	if m != nil && m.Count != nil {
-		return *m.Count
+func (x *LogReadRequest) GetCount() int64 {
+	if x != nil && x.Count != nil {
+		return *x.Count
 	}
 	return 0
 }
 
-func (m *LogReadRequest) GetCombinedLogRegex() string {
-	if m != nil && m.CombinedLogRegex != nil {
-		return *m.CombinedLogRegex
+func (x *LogReadRequest) GetCombinedLogRegex() string {
+	if x != nil && x.CombinedLogRegex != nil {
+		return *x.CombinedLogRegex
 	}
 	return ""
 }
 
-func (m *LogReadRequest) GetHostRegex() string {
-	if m != nil && m.HostRegex != nil {
-		return *m.HostRegex
+func (x *LogReadRequest) GetHostRegex() string {
+	if x != nil && x.HostRegex != nil {
+		return *x.HostRegex
 	}
 	return ""
 }
 
-func (m *LogReadRequest) GetReplicaIndex() int32 {
-	if m != nil && m.ReplicaIndex != nil {
-		return *m.ReplicaIndex
+func (x *LogReadRequest) GetReplicaIndex() int32 {
+	if x != nil && x.ReplicaIndex != nil {
+		return *x.ReplicaIndex
 	}
 	return 0
 }
 
-func (m *LogReadRequest) GetIncludeAppLogs() bool {
-	if m != nil && m.IncludeAppLogs != nil {
-		return *m.IncludeAppLogs
+func (x *LogReadRequest) GetIncludeAppLogs() bool {
+	if x != nil && x.IncludeAppLogs != nil {
+		return *x.IncludeAppLogs
 	}
 	return false
 }
 
-func (m *LogReadRequest) GetAppLogsPerRequest() int32 {
-	if m != nil && m.AppLogsPerRequest != nil {
-		return *m.AppLogsPerRequest
+func (x *LogReadRequest) GetAppLogsPerRequest() int32 {
+	if x != nil && x.AppLogsPerRequest != nil {
+		return *x.AppLogsPerRequest
 	}
 	return 0
 }
 
-func (m *LogReadRequest) GetIncludeHost() bool {
-	if m != nil && m.IncludeHost != nil {
-		return *m.IncludeHost
+func (x *LogReadRequest) GetIncludeHost() bool {
+	if x != nil && x.IncludeHost != nil {
+		return *x.IncludeHost
 	}
 	return false
 }
 
-func (m *LogReadRequest) GetIncludeAll() bool {
-	if m != nil && m.IncludeAll != nil {
-		return *m.IncludeAll
+func (x *LogReadRequest) GetIncludeAll() bool {
+	if x != nil && x.IncludeAll != nil {
+		return *x.IncludeAll
 	}
 	return false
 }
 
-func (m *LogReadRequest) GetCacheIterator() bool {
-	if m != nil && m.CacheIterator != nil {
-		return *m.CacheIterator
+func (x *LogReadRequest) GetCacheIterator() bool {
+	if x != nil && x.CacheIterator != nil {
+		return *x.CacheIterator
 	}
 	return false
 }
 
-func (m *LogReadRequest) GetNumShards() int32 {
-	if m != nil && m.NumShards != nil {
-		return *m.NumShards
+func (x *LogReadRequest) GetNumShards() int32 {
+	if x != nil && x.NumShards != nil {
+		return *x.NumShards
 	}
 	return 0
 }
 
 type LogReadResponse struct {
-	Log                  []*RequestLog `protobuf:"bytes,1,rep,name=log" json:"log,omitempty"`
-	Offset               *LogOffset    `protobuf:"bytes,2,opt,name=offset" json:"offset,omitempty"`
-	LastEndTime          *int64        `protobuf:"varint,3,opt,name=last_end_time,json=lastEndTime" json:"last_end_time,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *LogReadResponse) Reset()         { *m = LogReadResponse{} }
-func (m *LogReadResponse) String() string { return proto.CompactTextString(m) }
-func (*LogReadResponse) ProtoMessage()    {}
-func (*LogReadResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{10}
+	Log         []*RequestLog `protobuf:"bytes,1,rep,name=log,proto3" json:"log,omitempty"`
+	Offset      *LogOffset    `protobuf:"bytes,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+	LastEndTime *int64        `protobuf:"varint,3,opt,name=last_end_time,json=lastEndTime,proto3,oneof" json:"last_end_time,omitempty"`
 }
-func (m *LogReadResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogReadResponse.Unmarshal(m, b)
-}
-func (m *LogReadResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogReadResponse.Marshal(b, m, deterministic)
-}
-func (dst *LogReadResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogReadResponse.Merge(dst, src)
+
+func (x *LogReadResponse) Reset() {
+	*x = LogReadResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *LogReadResponse) XXX_Size() int {
-	return xxx_messageInfo_LogReadResponse.Size(m)
+
+func (x *LogReadResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *LogReadResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogReadResponse.DiscardUnknown(m)
+
+func (*LogReadResponse) ProtoMessage() {}
+
+func (x *LogReadResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
 }
 
-var xxx_messageInfo_LogReadResponse proto.InternalMessageInfo
+// Deprecated: Use LogReadResponse.ProtoReflect.Descriptor instead.
+func (*LogReadResponse) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{10}
+}
 
-func (m *LogReadResponse) GetLog() []*RequestLog {
-	if m != nil {
-		return m.Log
+func (x *LogReadResponse) GetLog() []*RequestLog {
+	if x != nil {
+		return x.Log
 	}
 	return nil
 }
 
-func (m *LogReadResponse) GetOffset() *LogOffset {
-	if m != nil {
-		return m.Offset
+func (x *LogReadResponse) GetOffset() *LogOffset {
+	if x != nil {
+		return x.Offset
 	}
 	return nil
 }
 
-func (m *LogReadResponse) GetLastEndTime() int64 {
-	if m != nil && m.LastEndTime != nil {
-		return *m.LastEndTime
+func (x *LogReadResponse) GetLastEndTime() int64 {
+	if x != nil && x.LastEndTime != nil {
+		return *x.LastEndTime
 	}
 	return 0
 }
 
 type LogUsageRecord struct {
-	VersionId            *string  `protobuf:"bytes,1,opt,name=version_id,json=versionId" json:"version_id,omitempty"`
-	StartTime            *int32   `protobuf:"varint,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
-	EndTime              *int32   `protobuf:"varint,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
-	Count                *int64   `protobuf:"varint,4,opt,name=count" json:"count,omitempty"`
-	TotalSize            *int64   `protobuf:"varint,5,opt,name=total_size,json=totalSize" json:"total_size,omitempty"`
-	Records              *int32   `protobuf:"varint,6,opt,name=records" json:"records,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *LogUsageRecord) Reset()         { *m = LogUsageRecord{} }
-func (m *LogUsageRecord) String() string { return proto.CompactTextString(m) }
-func (*LogUsageRecord) ProtoMessage()    {}
-func (*LogUsageRecord) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{11}
-}
-func (m *LogUsageRecord) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogUsageRecord.Unmarshal(m, b)
-}
-func (m *LogUsageRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogUsageRecord.Marshal(b, m, deterministic)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	VersionId *string `protobuf:"bytes,1,opt,name=version_id,json=versionId,proto3,oneof" json:"version_id,omitempty"`
+	StartTime *int32  `protobuf:"varint,2,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+	EndTime   *int32  `protobuf:"varint,3,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+	Count     *int64  `protobuf:"varint,4,opt,name=count,proto3,oneof" json:"count,omitempty"`
+	TotalSize *int64  `protobuf:"varint,5,opt,name=total_size,json=totalSize,proto3,oneof" json:"total_size,omitempty"`
+	Records   *int32  `protobuf:"varint,6,opt,name=records,proto3,oneof" json:"records,omitempty"`
 }
-func (dst *LogUsageRecord) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogUsageRecord.Merge(dst, src)
+
+func (x *LogUsageRecord) Reset() {
+	*x = LogUsageRecord{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *LogUsageRecord) XXX_Size() int {
-	return xxx_messageInfo_LogUsageRecord.Size(m)
+
+func (x *LogUsageRecord) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *LogUsageRecord) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogUsageRecord.DiscardUnknown(m)
+
+func (*LogUsageRecord) ProtoMessage() {}
+
+func (x *LogUsageRecord) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
 }
 
-var xxx_messageInfo_LogUsageRecord proto.InternalMessageInfo
+// Deprecated: Use LogUsageRecord.ProtoReflect.Descriptor instead.
+func (*LogUsageRecord) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{11}
+}
 
-func (m *LogUsageRecord) GetVersionId() string {
-	if m != nil && m.VersionId != nil {
-		return *m.VersionId
+func (x *LogUsageRecord) GetVersionId() string {
+	if x != nil && x.VersionId != nil {
+		return *x.VersionId
 	}
 	return ""
 }
 
-func (m *LogUsageRecord) GetStartTime() int32 {
-	if m != nil && m.StartTime != nil {
-		return *m.StartTime
+func (x *LogUsageRecord) GetStartTime() int32 {
+	if x != nil && x.StartTime != nil {
+		return *x.StartTime
 	}
 	return 0
 }
 
-func (m *LogUsageRecord) GetEndTime() int32 {
-	if m != nil && m.EndTime != nil {
-		return *m.EndTime
+func (x *LogUsageRecord) GetEndTime() int32 {
+	if x != nil && x.EndTime != nil {
+		return *x.EndTime
 	}
 	return 0
 }
 
-func (m *LogUsageRecord) GetCount() int64 {
-	if m != nil && m.Count != nil {
-		return *m.Count
+func (x *LogUsageRecord) GetCount() int64 {
+	if x != nil && x.Count != nil {
+		return *x.Count
 	}
 	return 0
 }
 
-func (m *LogUsageRecord) GetTotalSize() int64 {
-	if m != nil && m.TotalSize != nil {
-		return *m.TotalSize
+func (x *LogUsageRecord) GetTotalSize() int64 {
+	if x != nil && x.TotalSize != nil {
+		return *x.TotalSize
 	}
 	return 0
 }
 
-func (m *LogUsageRecord) GetRecords() int32 {
-	if m != nil && m.Records != nil {
-		return *m.Records
+func (x *LogUsageRecord) GetRecords() int32 {
+	if x != nil && x.Records != nil {
+		return *x.Records
 	}
 	return 0
 }
 
 type LogUsageRequest struct {
-	AppId                *string  `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
-	VersionId            []string `protobuf:"bytes,2,rep,name=version_id,json=versionId" json:"version_id,omitempty"`
-	StartTime            *int32   `protobuf:"varint,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
-	EndTime              *int32   `protobuf:"varint,4,opt,name=end_time,json=endTime" json:"end_time,omitempty"`
-	ResolutionHours      *uint32  `protobuf:"varint,5,opt,name=resolution_hours,json=resolutionHours,def=1" json:"resolution_hours,omitempty"`
-	CombineVersions      *bool    `protobuf:"varint,6,opt,name=combine_versions,json=combineVersions" json:"combine_versions,omitempty"`
-	UsageVersion         *int32   `protobuf:"varint,7,opt,name=usage_version,json=usageVersion" json:"usage_version,omitempty"`
-	VersionsOnly         *bool    `protobuf:"varint,8,opt,name=versions_only,json=versionsOnly" json:"versions_only,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *LogUsageRequest) Reset()         { *m = LogUsageRequest{} }
-func (m *LogUsageRequest) String() string { return proto.CompactTextString(m) }
-func (*LogUsageRequest) ProtoMessage()    {}
-func (*LogUsageRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{12}
-}
-func (m *LogUsageRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogUsageRequest.Unmarshal(m, b)
-}
-func (m *LogUsageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogUsageRequest.Marshal(b, m, deterministic)
-}
-func (dst *LogUsageRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogUsageRequest.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId           string   `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+	VersionId       []string `protobuf:"bytes,2,rep,name=version_id,json=versionId,proto3" json:"version_id,omitempty"`
+	StartTime       *int32   `protobuf:"varint,3,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"`
+	EndTime         *int32   `protobuf:"varint,4,opt,name=end_time,json=endTime,proto3,oneof" json:"end_time,omitempty"`
+	ResolutionHours *uint32  `protobuf:"varint,5,opt,name=resolution_hours,json=resolutionHours,proto3,oneof" json:"resolution_hours,omitempty"`
+	CombineVersions *bool    `protobuf:"varint,6,opt,name=combine_versions,json=combineVersions,proto3,oneof" json:"combine_versions,omitempty"`
+	UsageVersion    *int32   `protobuf:"varint,7,opt,name=usage_version,json=usageVersion,proto3,oneof" json:"usage_version,omitempty"`
+	VersionsOnly    *bool    `protobuf:"varint,8,opt,name=versions_only,json=versionsOnly,proto3,oneof" json:"versions_only,omitempty"`
 }
-func (m *LogUsageRequest) XXX_Size() int {
-	return xxx_messageInfo_LogUsageRequest.Size(m)
+
+func (x *LogUsageRequest) Reset() {
+	*x = LogUsageRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *LogUsageRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogUsageRequest.DiscardUnknown(m)
+
+func (x *LogUsageRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_LogUsageRequest proto.InternalMessageInfo
+func (*LogUsageRequest) ProtoMessage() {}
 
-const Default_LogUsageRequest_ResolutionHours uint32 = 1
+func (x *LogUsageRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
+}
 
-func (m *LogUsageRequest) GetAppId() string {
-	if m != nil && m.AppId != nil {
-		return *m.AppId
+// Deprecated: Use LogUsageRequest.ProtoReflect.Descriptor instead.
+func (*LogUsageRequest) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *LogUsageRequest) GetAppId() string {
+	if x != nil {
+		return x.AppId
 	}
 	return ""
 }
 
-func (m *LogUsageRequest) GetVersionId() []string {
-	if m != nil {
-		return m.VersionId
+func (x *LogUsageRequest) GetVersionId() []string {
+	if x != nil {
+		return x.VersionId
 	}
 	return nil
 }
 
-func (m *LogUsageRequest) GetStartTime() int32 {
-	if m != nil && m.StartTime != nil {
-		return *m.StartTime
+func (x *LogUsageRequest) GetStartTime() int32 {
+	if x != nil && x.StartTime != nil {
+		return *x.StartTime
 	}
 	return 0
 }
 
-func (m *LogUsageRequest) GetEndTime() int32 {
-	if m != nil && m.EndTime != nil {
-		return *m.EndTime
+func (x *LogUsageRequest) GetEndTime() int32 {
+	if x != nil && x.EndTime != nil {
+		return *x.EndTime
 	}
 	return 0
 }
 
-func (m *LogUsageRequest) GetResolutionHours() uint32 {
-	if m != nil && m.ResolutionHours != nil {
-		return *m.ResolutionHours
+func (x *LogUsageRequest) GetResolutionHours() uint32 {
+	if x != nil && x.ResolutionHours != nil {
+		return *x.ResolutionHours
 	}
-	return Default_LogUsageRequest_ResolutionHours
+	return 0
 }
 
-func (m *LogUsageRequest) GetCombineVersions() bool {
-	if m != nil && m.CombineVersions != nil {
-		return *m.CombineVersions
+func (x *LogUsageRequest) GetCombineVersions() bool {
+	if x != nil && x.CombineVersions != nil {
+		return *x.CombineVersions
 	}
 	return false
 }
 
-func (m *LogUsageRequest) GetUsageVersion() int32 {
-	if m != nil && m.UsageVersion != nil {
-		return *m.UsageVersion
+func (x *LogUsageRequest) GetUsageVersion() int32 {
+	if x != nil && x.UsageVersion != nil {
+		return *x.UsageVersion
 	}
 	return 0
 }
 
-func (m *LogUsageRequest) GetVersionsOnly() bool {
-	if m != nil && m.VersionsOnly != nil {
-		return *m.VersionsOnly
+func (x *LogUsageRequest) GetVersionsOnly() bool {
+	if x != nil && x.VersionsOnly != nil {
+		return *x.VersionsOnly
 	}
 	return false
 }
 
 type LogUsageResponse struct {
-	Usage                []*LogUsageRecord `protobuf:"bytes,1,rep,name=usage" json:"usage,omitempty"`
-	Summary              *LogUsageRecord   `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *LogUsageResponse) Reset()         { *m = LogUsageResponse{} }
-func (m *LogUsageResponse) String() string { return proto.CompactTextString(m) }
-func (*LogUsageResponse) ProtoMessage()    {}
-func (*LogUsageResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_log_service_f054fd4b5012319d, []int{13}
-}
-func (m *LogUsageResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogUsageResponse.Unmarshal(m, b)
+	Usage   []*LogUsageRecord `protobuf:"bytes,1,rep,name=usage,proto3" json:"usage,omitempty"`
+	Summary *LogUsageRecord   `protobuf:"bytes,2,opt,name=summary,proto3,oneof" json:"summary,omitempty"`
 }
-func (m *LogUsageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogUsageResponse.Marshal(b, m, deterministic)
-}
-func (dst *LogUsageResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogUsageResponse.Merge(dst, src)
+
+func (x *LogUsageResponse) Reset() {
+	*x = LogUsageResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_log_service_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *LogUsageResponse) XXX_Size() int {
-	return xxx_messageInfo_LogUsageResponse.Size(m)
+
+func (x *LogUsageResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *LogUsageResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogUsageResponse.DiscardUnknown(m)
+
+func (*LogUsageResponse) ProtoMessage() {}
+
+func (x *LogUsageResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_log_service_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)
 }
 
-var xxx_messageInfo_LogUsageResponse proto.InternalMessageInfo
+// Deprecated: Use LogUsageResponse.ProtoReflect.Descriptor instead.
+func (*LogUsageResponse) Descriptor() ([]byte, []int) {
+	return file_log_service_proto_rawDescGZIP(), []int{13}
+}
 
-func (m *LogUsageResponse) GetUsage() []*LogUsageRecord {
-	if m != nil {
-		return m.Usage
+func (x *LogUsageResponse) GetUsage() []*LogUsageRecord {
+	if x != nil {
+		return x.Usage
 	}
 	return nil
 }
 
-func (m *LogUsageResponse) GetSummary() *LogUsageRecord {
-	if m != nil {
-		return m.Summary
+func (x *LogUsageResponse) GetSummary() *LogUsageRecord {
+	if x != nil {
+		return x.Summary
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*LogServiceError)(nil), "appengine.LogServiceError")
-	proto.RegisterType((*UserAppLogLine)(nil), "appengine.UserAppLogLine")
-	proto.RegisterType((*UserAppLogGroup)(nil), "appengine.UserAppLogGroup")
-	proto.RegisterType((*FlushRequest)(nil), "appengine.FlushRequest")
-	proto.RegisterType((*SetStatusRequest)(nil), "appengine.SetStatusRequest")
-	proto.RegisterType((*LogOffset)(nil), "appengine.LogOffset")
-	proto.RegisterType((*LogLine)(nil), "appengine.LogLine")
-	proto.RegisterType((*RequestLog)(nil), "appengine.RequestLog")
-	proto.RegisterType((*LogModuleVersion)(nil), "appengine.LogModuleVersion")
-	proto.RegisterType((*LogReadRequest)(nil), "appengine.LogReadRequest")
-	proto.RegisterType((*LogReadResponse)(nil), "appengine.LogReadResponse")
-	proto.RegisterType((*LogUsageRecord)(nil), "appengine.LogUsageRecord")
-	proto.RegisterType((*LogUsageRequest)(nil), "appengine.LogUsageRequest")
-	proto.RegisterType((*LogUsageResponse)(nil), "appengine.LogUsageResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/log/log_service.proto", fileDescriptor_log_service_f054fd4b5012319d)
-}
-
-var fileDescriptor_log_service_f054fd4b5012319d = []byte{
-	// 1553 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x72, 0xdb, 0xc6,
-	0x15, 0x2e, 0x48, 0x51, 0x24, 0x0f, 0x49, 0x91, 0x5a, 0xcb, 0xce, 0xda, 0xae, 0x6b, 0x1a, 0x4e,
-	0x1c, 0xd6, 0x93, 0x48, 0x93, 0xa4, 0x57, 0xca, 0x95, 0xd3, 0x2a, 0x8e, 0x26, 0xb4, 0xd5, 0x40,
-	0x72, 0x3a, 0xd3, 0x1b, 0x0c, 0x0a, 0x1c, 0x81, 0x18, 0x2f, 0xb1, 0xc8, 0xee, 0xc2, 0x91, 0x72,
-	0xdb, 0xdb, 0x3e, 0x46, 0x1f, 0xa2, 0xaf, 0xd2, 0xb7, 0xe9, 0xec, 0xd9, 0x05, 0x44, 0x2a, 0x4d,
-	0xc6, 0x33, 0xb9, 0xe0, 0x10, 0xfb, 0x9d, 0x83, 0xdd, 0xf3, 0xf3, 0x9d, 0x6f, 0x01, 0xc7, 0xb9,
-	0x94, 0xb9, 0xc0, 0xc3, 0x5c, 0x8a, 0xa4, 0xcc, 0x0f, 0xa5, 0xca, 0x8f, 0x92, 0xaa, 0xc2, 0x32,
-	0x2f, 0x4a, 0x3c, 0x2a, 0x4a, 0x83, 0xaa, 0x4c, 0xc4, 0x91, 0x90, 0xb9, 0xfd, 0xc5, 0x1a, 0xd5,
-	0xbb, 0x22, 0xc5, 0xc3, 0x4a, 0x49, 0x23, 0xd9, 0xb0, 0xf5, 0x0c, 0x5f, 0xc3, 0x74, 0x29, 0xf3,
-	0x73, 0x67, 0x3e, 0x51, 0x4a, 0xaa, 0xf0, 0x4b, 0x18, 0xd2, 0xc3, 0x9f, 0x65, 0x86, 0x6c, 0x17,
-	0x3a, 0x67, 0xdf, 0xce, 0x7e, 0xc7, 0xee, 0xc0, 0xf4, 0xf4, 0xf5, 0xf7, 0x2f, 0x96, 0xa7, 0x7f,
-	0x89, 0xa3, 0x93, 0xef, 0xde, 0x9c, 0x9c, 0x5f, 0xcc, 0x02, 0xb6, 0x0f, 0x93, 0xf3, 0x8b, 0xb3,
-	0xe8, 0xc5, 0xcb, 0x93, 0xf8, 0x24, 0x8a, 0xce, 0xa2, 0x59, 0x27, 0xcc, 0x61, 0xef, 0x8d, 0x46,
-	0xf5, 0xa2, 0xaa, 0x96, 0x32, 0x5f, 0x16, 0x25, 0xb2, 0x8f, 0x60, 0xcf, 0x14, 0x6b, 0xd4, 0x26,
-	0x59, 0x57, 0x71, 0xad, 0x31, 0xe5, 0xc1, 0xbc, 0xb3, 0xe8, 0x46, 0x93, 0x16, 0x7d, 0xa3, 0x31,
-	0x65, 0x07, 0xd0, 0x13, 0xf8, 0x0e, 0x05, 0xef, 0x90, 0xd5, 0x2d, 0x18, 0x87, 0xfe, 0x1a, 0xb5,
-	0x4e, 0x72, 0xe4, 0xdd, 0x79, 0x67, 0x31, 0x8c, 0x9a, 0x65, 0xf8, 0x12, 0xa6, 0x37, 0x07, 0xbd,
-	0x54, 0xb2, 0xae, 0xd8, 0x9f, 0x60, 0x60, 0x73, 0x15, 0x45, 0x89, 0xbc, 0x33, 0xef, 0x2e, 0x46,
-	0x9f, 0xdf, 0x3f, 0x6c, 0x33, 0x3d, 0xdc, 0x0e, 0x2b, 0xea, 0x0b, 0xf7, 0x10, 0x86, 0x30, 0xfe,
-	0x5a, 0xd4, 0x7a, 0x15, 0xe1, 0x0f, 0x35, 0x6a, 0xc3, 0x18, 0xec, 0x08, 0x99, 0x6b, 0x1e, 0xcc,
-	0x83, 0xc5, 0x38, 0xa2, 0xe7, 0xf0, 0x39, 0xcc, 0xce, 0xd1, 0x9c, 0x9b, 0xc4, 0xd4, 0xba, 0xf1,
-	0xbb, 0x07, 0xbb, 0x9a, 0x00, 0xca, 0x67, 0x18, 0xf9, 0x55, 0xf8, 0x1c, 0x86, 0x4b, 0x99, 0x9f,
-	0x5d, 0x5e, 0x6a, 0x34, 0xec, 0x11, 0x80, 0x72, 0xfe, 0x71, 0x91, 0xf9, 0x2d, 0x87, 0x1e, 0x39,
-	0xcd, 0xc2, 0x0b, 0xe8, 0x37, 0x65, 0x62, 0xb0, 0x63, 0x0b, 0xe2, 0x8b, 0x43, 0xcf, 0xdb, 0x35,
-	0xe9, 0x35, 0x35, 0x79, 0x0c, 0x23, 0x9b, 0xe6, 0x76, 0x5d, 0x40, 0xc8, 0xfc, 0x95, 0x2f, 0xcd,
-	0x3f, 0x01, 0xc0, 0x47, 0xb9, 0x94, 0x39, 0xbb, 0x0b, 0xbb, 0x49, 0x55, 0xb9, 0xf3, 0xad, 0x6b,
-	0x2f, 0xa9, 0xaa, 0xd3, 0x8c, 0x7d, 0x08, 0xc3, 0xb5, 0xcc, 0x6a, 0x81, 0xd6, 0xf2, 0xd1, 0x3c,
-	0x58, 0x0c, 0x8f, 0xfb, 0x19, 0x5e, 0x26, 0xb5, 0x30, 0xd1, 0xc0, 0x59, 0x4e, 0x33, 0x9b, 0xc0,
-	0x3b, 0x54, 0xba, 0x90, 0xa5, 0x75, 0xeb, 0xd0, 0x06, 0x43, 0x8f, 0x38, 0xf3, 0x46, 0x7e, 0x36,
-	0x94, 0xcd, 0xfc, 0xd8, 0x27, 0xb0, 0x2b, 0xa9, 0x10, 0xfc, 0xe9, 0x3c, 0x58, 0x8c, 0x3e, 0x3f,
-	0xd8, 0xe8, 0x47, 0x5b, 0xa4, 0xc8, 0xfb, 0xb0, 0x3d, 0xe8, 0x14, 0x15, 0xdf, 0xa1, 0x33, 0x3a,
-	0x45, 0xc5, 0x1e, 0xc0, 0xa0, 0x2c, 0xd2, 0xb7, 0x65, 0xb2, 0x46, 0xde, 0xb3, 0x01, 0x46, 0xed,
-	0xda, 0x1e, 0xac, 0x4d, 0xa2, 0x4c, 0x4c, 0x45, 0xdb, 0xa5, 0xa2, 0x0d, 0x09, 0xb9, 0xb0, 0x95,
-	0xbb, 0x0f, 0x03, 0x2c, 0x33, 0x67, 0xec, 0x93, 0xb1, 0x8f, 0x65, 0x46, 0x26, 0x0e, 0x7d, 0x91,
-	0x18, 0x2c, 0xd3, 0x6b, 0x3e, 0x70, 0x16, 0xbf, 0x24, 0xb2, 0xa5, 0xd7, 0xa9, 0x40, 0xcd, 0x87,
-	0xce, 0xe2, 0x97, 0xb6, 0xd7, 0x6b, 0x34, 0x2b, 0x99, 0x71, 0x70, 0xbd, 0x76, 0x2b, 0x1b, 0xa1,
-	0x42, 0x2d, 0x6b, 0x95, 0x22, 0x1f, 0x91, 0xa5, 0x5d, 0xb3, 0x27, 0x30, 0x5e, 0x19, 0x53, 0xc5,
-	0xbe, 0x58, 0x7c, 0x4c, 0xf6, 0x91, 0xc5, 0xbe, 0x77, 0xd0, 0x06, 0x85, 0x26, 0xd4, 0x60, 0xbf,
-	0x62, 0x4f, 0x61, 0xa2, 0x50, 0x57, 0xb2, 0xd4, 0x18, 0xeb, 0xe2, 0x27, 0xe4, 0x7b, 0x14, 0xce,
-	0xb8, 0x01, 0xcf, 0x8b, 0x9f, 0xd0, 0x9d, 0x7d, 0x89, 0x4a, 0xa1, 0xe2, 0x53, 0x57, 0x9d, 0x66,
-	0x6d, 0xab, 0x53, 0x6b, 0x54, 0x71, 0x92, 0x63, 0x69, 0xf8, 0x8c, 0xac, 0x43, 0x8b, 0xbc, 0xb0,
-	0x00, 0x0b, 0x61, 0x52, 0x2b, 0x11, 0xaf, 0x93, 0x2a, 0xc6, 0xd2, 0xa8, 0x6b, 0xbe, 0xef, 0x62,
-	0xab, 0x95, 0x78, 0x95, 0x54, 0x27, 0x16, 0xb2, 0xdb, 0xa7, 0x72, 0xfd, 0x8f, 0xa2, 0xc4, 0x8c,
-	0x33, 0x97, 0x5a, 0xb3, 0xb6, 0x0c, 0x4c, 0xaa, 0x22, 0x6e, 0x8a, 0x75, 0x67, 0x1e, 0x2c, 0xba,
-	0x11, 0x24, 0x55, 0xf1, 0xca, 0xd7, 0x8b, 0xc1, 0xce, 0x4a, 0x6a, 0xc3, 0x0f, 0xe8, 0x64, 0x7a,
-	0xb6, 0x58, 0x6a, 0xb1, 0xbb, 0xf3, 0x60, 0x11, 0x44, 0xf4, 0xcc, 0x9e, 0xc1, 0xd4, 0x24, 0xfa,
-	0x6d, 0xfc, 0x43, 0x8d, 0x35, 0xc6, 0xd4, 0xe8, 0x7b, 0xf4, 0xca, 0xc4, 0xc2, 0xdf, 0x59, 0xf4,
-	0xb5, 0xed, 0xf6, 0x43, 0x18, 0x92, 0x1f, 0x79, 0x7c, 0xe0, 0x92, 0xb5, 0x00, 0x19, 0x0f, 0xe1,
-	0xce, 0x8f, 0x89, 0x8e, 0x85, 0x4c, 0xb2, 0xa2, 0xcc, 0x63, 0xcf, 0x3e, 0xce, 0xe7, 0xc1, 0x62,
-	0x10, 0xed, 0xff, 0x98, 0xe8, 0xa5, 0xb3, 0x34, 0x83, 0xfb, 0x04, 0xc6, 0x15, 0x96, 0xe4, 0x4b,
-	0xfc, 0xb8, 0x4f, 0xe1, 0x8f, 0x3c, 0x46, 0x1c, 0xf9, 0xd8, 0x36, 0xa0, 0x12, 0x45, 0x9a, 0xc4,
-	0x45, 0x99, 0xe1, 0x15, 0x7f, 0x30, 0x0f, 0x16, 0xbd, 0xe3, 0xce, 0xa7, 0x9f, 0xd9, 0x26, 0x90,
-	0xe1, 0xd4, 0xe2, 0x6c, 0x0e, 0x83, 0xcb, 0xa2, 0x2c, 0xf4, 0x0a, 0x33, 0xfe, 0xd0, 0x1e, 0x78,
-	0xbc, 0x63, 0x54, 0x8d, 0x51, 0x8b, 0xda, 0xd0, 0x53, 0x21, 0x4b, 0x8c, 0xdf, 0xe2, 0x35, 0xff,
-	0x3d, 0x09, 0xc0, 0x80, 0x80, 0x6f, 0xf1, 0x9a, 0x3d, 0x83, 0x1d, 0x52, 0xab, 0x47, 0xa4, 0x56,
-	0x6c, 0x7b, 0x3a, 0x48, 0xa6, 0xc8, 0xce, 0xfe, 0x08, 0x33, 0xfb, 0xaf, 0xe3, 0xa2, 0x4c, 0xe5,
-	0xba, 0x12, 0x68, 0x90, 0x7f, 0x48, 0xf9, 0x4d, 0x09, 0x3f, 0x6d, 0x61, 0xf6, 0x09, 0x30, 0x3b,
-	0xed, 0x6e, 0x9b, 0x58, 0xa1, 0xc0, 0x44, 0x23, 0x7f, 0x46, 0x07, 0xcf, 0x92, 0xaa, 0x3a, 0x21,
-	0x43, 0xe4, 0x70, 0xdb, 0x49, 0xbc, 0x2a, 0x4c, 0xac, 0x30, 0xd1, 0xb2, 0xe4, 0x7f, 0xb0, 0x69,
-	0x46, 0x60, 0xa1, 0x88, 0x10, 0xf6, 0x05, 0xdc, 0xb3, 0xc5, 0x35, 0x2b, 0x25, 0x8d, 0x11, 0x98,
-	0xc5, 0x97, 0x52, 0xb9, 0xb2, 0x3d, 0xa6, 0xf3, 0x6d, 0xe9, 0x2f, 0x1a, 0xe3, 0xd7, 0x52, 0x51,
-	0xf9, 0xbe, 0x84, 0x07, 0x3f, 0x7f, 0xc9, 0xf7, 0x45, 0xf3, 0x39, 0xbd, 0xf8, 0xc1, 0xad, 0x17,
-	0x7d, 0x77, 0x34, 0xdd, 0x17, 0xed, 0x8b, 0x74, 0xd2, 0x13, 0x6a, 0xd0, 0xa4, 0x45, 0xe9, 0x8c,
-	0xc7, 0x30, 0xb2, 0x97, 0x1a, 0x2a, 0x47, 0x8a, 0x90, 0x12, 0x04, 0x07, 0x59, 0x5a, 0x84, 0x7f,
-	0x83, 0xd9, 0x52, 0xe6, 0xaf, 0x48, 0xc8, 0x9a, 0x81, 0xdb, 0xd2, 0xbc, 0xe0, 0x7d, 0x35, 0x2f,
-	0xd8, 0xd2, 0xbc, 0xf0, 0xbf, 0x3d, 0xd8, 0x5b, 0xca, 0x3c, 0xc2, 0x24, 0x6b, 0x28, 0xf5, 0x0b,
-	0x12, 0x7b, 0x7b, 0xa3, 0xee, 0xb6, 0x78, 0x7e, 0x05, 0x7b, 0x3e, 0x9a, 0x46, 0x23, 0xee, 0x10,
-	0x0f, 0x1e, 0x6e, 0xf3, 0x60, 0x2b, 0x85, 0x68, 0xb2, 0xde, 0xca, 0x68, 0x5b, 0x07, 0xbb, 0x54,
-	0xa9, 0x5f, 0xd0, 0xc1, 0x1d, 0x32, 0xb6, 0x3a, 0x78, 0xa3, 0xcd, 0xbd, 0xf7, 0xd0, 0xe6, 0x6d,
-	0xa1, 0xdf, 0x9d, 0x77, 0xb7, 0x85, 0xfe, 0x39, 0xec, 0xaf, 0x8b, 0xb2, 0x58, 0xd7, 0xeb, 0x98,
-	0xae, 0x60, 0xba, 0xb5, 0xfa, 0xc4, 0xa6, 0xa9, 0x37, 0x58, 0x46, 0xd3, 0xfd, 0xf5, 0x29, 0xb0,
-	0xa2, 0x4c, 0x45, 0x9d, 0xe1, 0x26, 0x9d, 0x07, 0x6e, 0x5c, 0xbd, 0x65, 0x83, 0xd0, 0x07, 0xd0,
-	0x4b, 0x65, 0x5d, 0x1a, 0x3e, 0xa4, 0xf8, 0xdd, 0xc2, 0xd2, 0xbc, 0x91, 0x23, 0x3a, 0x51, 0x61,
-	0x8e, 0x57, 0x7c, 0x8f, 0x7a, 0x35, 0x6b, 0x2c, 0xd4, 0xa5, 0x1c, 0xaf, 0x6c, 0xf4, 0x56, 0x83,
-	0xbc, 0x97, 0x53, 0xcb, 0xa1, 0x45, 0x9c, 0xf9, 0xe9, 0xed, 0x71, 0x9f, 0x51, 0xe4, 0xdb, 0xa3,
-	0xbe, 0x80, 0x59, 0x13, 0xb6, 0xed, 0x35, 0x7d, 0x23, 0x00, 0x05, 0xbd, 0xe7, 0x71, 0xf7, 0x75,
-	0xa1, 0xd9, 0x11, 0x1c, 0x34, 0x1e, 0x71, 0x85, 0x2d, 0xf3, 0xf9, 0x3e, 0xed, 0xba, 0x9f, 0x38,
-	0xb7, 0xbf, 0xa2, 0xda, 0x50, 0xa4, 0x66, 0x6b, 0x92, 0xcd, 0x11, 0x6d, 0x3b, 0xf2, 0xd8, 0x37,
-	0x56, 0x29, 0x1f, 0xc3, 0xa8, 0x3d, 0x5d, 0x08, 0x3e, 0x26, 0x0f, 0x68, 0x0e, 0x16, 0xc2, 0x8e,
-	0x4d, 0x9a, 0xa4, 0x2b, 0x8c, 0x0b, 0x83, 0x2a, 0x31, 0x52, 0xf1, 0x09, 0xf9, 0x4c, 0x08, 0x3d,
-	0xf5, 0xa0, 0xad, 0x44, 0x59, 0xaf, 0x63, 0xbd, 0x4a, 0x54, 0xa6, 0x39, 0xa3, 0x88, 0x86, 0x65,
-	0xbd, 0x3e, 0x27, 0x20, 0xfc, 0x57, 0x40, 0xdf, 0x83, 0x8e, 0xdb, 0xee, 0xb2, 0x61, 0x1f, 0x43,
-	0x57, 0xc8, 0x9c, 0x07, 0xc4, 0xcd, 0xbb, 0x1b, 0x2c, 0xb9, 0xf9, 0xc6, 0x88, 0xac, 0xc7, 0x06,
-	0xa3, 0x3a, 0xef, 0xc1, 0xa8, 0x10, 0x26, 0x22, 0xd1, 0x26, 0x6e, 0xf9, 0xe9, 0xc8, 0x3b, 0xb2,
-	0xe0, 0x89, 0xe3, 0x68, 0xf8, 0x9f, 0x80, 0x46, 0xed, 0x8d, 0xfd, 0xac, 0x89, 0x30, 0x95, 0xea,
-	0xf6, 0x4c, 0x05, 0xb7, 0x86, 0xf3, 0xd6, 0x3c, 0x74, 0x5c, 0x7e, 0xff, 0x7f, 0x1e, 0xba, 0x64,
-	0x6c, 0xe7, 0xa1, 0xe5, 0xd9, 0xce, 0x26, 0xcf, 0x1e, 0x01, 0x18, 0x69, 0x12, 0xe1, 0xee, 0xe1,
-	0x9e, 0x9b, 0x2f, 0x42, 0xe8, 0x12, 0xe6, 0xd0, 0x57, 0x14, 0x97, 0xe6, 0xbb, 0x6e, 0x3b, 0xbf,
-	0x0c, 0xff, 0xdd, 0xa1, 0x4a, 0xfa, 0xd0, 0x7f, 0x8b, 0x4c, 0xfc, 0x7c, 0xc4, 0x7b, 0xbf, 0x36,
-	0xe2, 0xbd, 0xcd, 0x11, 0x9f, 0xd9, 0xcf, 0x11, 0x51, 0x1b, 0xbb, 0xf7, 0x4a, 0xd6, 0x4a, 0x53,
-	0x0a, 0x93, 0xe3, 0xe0, 0xb3, 0x68, 0x7a, 0x63, 0xfa, 0xc6, 0x5a, 0xec, 0x25, 0xe3, 0x07, 0xa7,
-	0xd1, 0x23, 0x97, 0xd4, 0x20, 0x9a, 0x7a, 0xdc, 0x8b, 0x0e, 0x7d, 0xa0, 0xd4, 0x36, 0xb1, 0x56,
-	0xb8, 0xdc, 0xa8, 0x8f, 0x09, 0x6c, 0xa4, 0xe9, 0x29, 0x4c, 0x9a, 0x7d, 0x62, 0x59, 0x8a, 0x6b,
-	0x3f, 0xe2, 0xe3, 0x06, 0x3c, 0x2b, 0xc5, 0x75, 0x78, 0x45, 0x2a, 0xed, 0xab, 0xe4, 0x09, 0x77,
-	0x04, 0x3d, 0xda, 0xc8, 0x53, 0xee, 0xfe, 0x36, 0x8d, 0x36, 0xc8, 0x10, 0x39, 0x3f, 0xf6, 0x05,
-	0xf4, 0x75, 0xbd, 0x5e, 0x27, 0xea, 0xda, 0x33, 0xef, 0x57, 0x5e, 0x69, 0x3c, 0xbf, 0xea, 0xfd,
-	0xdd, 0x92, 0xf6, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x70, 0xd9, 0xa0, 0xf8, 0x48, 0x0d, 0x00,
-	0x00,
+var File_log_service_proto protoreflect.FileDescriptor
+
+var file_log_service_proto_rawDesc = []byte{
+	0x0a, 0x11, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0x4e,
+	0x0a, 0x0f, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f,
+	0x72, 0x22, 0x3b, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06,
+	0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
+	0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53,
+	0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x22, 0x67,
+	0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65,
+	0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x73,
+	0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x55, 0x73, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a,
+	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x47, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x41,
+	0x70, 0x70, 0x4c, 0x6f, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x08, 0x6c, 0x6f,
+	0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70,
+	0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65,
+	0x22, 0x30, 0x0a, 0x0c, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x17, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00,
+	0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, 0x6f,
+	0x67, 0x73, 0x22, 0x2a, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3e,
+	0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x72,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48,
+	0x00, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42,
+	0x0d, 0x0a, 0x0b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x54,
+	0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a,
+	0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65,
+	0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x22, 0xd3, 0x0d, 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x4c, 0x6f, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x6f,
+	0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+	0x08, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a,
+	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
+	0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x6f, 0x66,
+	0x66, 0x73, 0x65, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74,
+	0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x0e, 0x0a,
+	0x02, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1f, 0x0a,
+	0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x02, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d,
+	0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a,
+	0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x61, 0x74, 0x65,
+	0x6e, 0x63, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e,
+	0x63, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06,
+	0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65,
+	0x74, 0x68, 0x6f, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+	0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+	0x12, 0x21, 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+	0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x56, 0x65, 0x72, 0x73,
+	0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x72,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0e, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x69, 0x7a, 0x65,
+	0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01,
+	0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x88, 0x01,
+	0x01, 0x12, 0x22, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18,
+	0x10, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65,
+	0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x72, 0x6c, 0x5f, 0x6d, 0x61, 0x70,
+	0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x72,
+	0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d,
+	0x62, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d,
+	0x62, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x6d, 0x63, 0x79,
+	0x63, 0x6c, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x0a, 0x61, 0x70,
+	0x69, 0x4d, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x68,
+	0x6f, 0x73, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x04, 0x68, 0x6f, 0x73,
+	0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x15, 0x20, 0x01,
+	0x28, 0x01, 0x48, 0x07, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a,
+	0x0f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x51, 0x75,
+	0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x74, 0x61,
+	0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x48, 0x09, 0x52,
+	0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13,
+	0x77, 0x61, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0a, 0x52, 0x11, 0x77, 0x61, 0x73,
+	0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01,
+	0x01, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d,
+	0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x48, 0x0b, 0x52, 0x0b, 0x70, 0x65, 0x6e, 0x64, 0x69,
+	0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x70,
+	0x6c, 0x69, 0x63, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78,
+	0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18,
+	0x1b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0d, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
+	0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x6b, 0x65,
+	0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x0e, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65,
+	0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x1d,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x2e,
+	0x0a, 0x10, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
+	0x74, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0f, 0x52, 0x0f, 0x6c, 0x69, 0x6e, 0x65,
+	0x73, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31,
+	0x0a, 0x12, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x72, 0x65, 0x6c,
+	0x65, 0x61, 0x73, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x10, 0x52, 0x10, 0x61, 0x70,
+	0x70, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x88, 0x01,
+	0x01, 0x12, 0x24, 0x0a, 0x0b, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+	0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x48, 0x11, 0x52, 0x0a, 0x65, 0x78, 0x69, 0x74, 0x52, 0x65,
+	0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x77, 0x61, 0x73, 0x5f, 0x74,
+	0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d,
+	0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x12, 0x52, 0x13, 0x77, 0x61, 0x73, 0x54, 0x68,
+	0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01,
+	0x01, 0x12, 0x40, 0x0a, 0x1a, 0x77, 0x61, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c,
+	0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18,
+	0x20, 0x20, 0x01, 0x28, 0x08, 0x48, 0x13, 0x52, 0x17, 0x77, 0x61, 0x73, 0x54, 0x68, 0x72, 0x6f,
+	0x74, 0x74, 0x6c, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
+	0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64,
+	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x03, 0x48, 0x14, 0x52, 0x0d, 0x74,
+	0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12,
+	0x24, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x22,
+	0x20, 0x01, 0x28, 0x0c, 0x48, 0x15, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61,
+	0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
+	0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0b,
+	0x0a, 0x09, 0x5f, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+	0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x75, 0x73, 0x65,
+	0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x69, 0x5f,
+	0x6d, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x68, 0x6f, 0x73, 0x74,
+	0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x61,
+	0x73, 0x6b, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0c, 0x0a,
+	0x0a, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f,
+	0x77, 0x61, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f,
+	0x74, 0x69, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
+	0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73,
+	0x68, 0x65, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x6b, 0x65,
+	0x79, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x63, 0x6f,
+	0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x42, 0x0e, 0x0a,
+	0x0c, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x19, 0x0a,
+	0x17, 0x5f, 0x77, 0x61, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f,
+	0x66, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x77, 0x61, 0x73,
+	0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x72,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x74, 0x68, 0x72, 0x6f,
+	0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x75, 0x0a, 0x10, 0x4c, 0x6f,
+	0x67, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20,
+	0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01,
+	0x12, 0x22, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49,
+	0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f,
+	0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
+	0x64, 0x22, 0xab, 0x08, 0x0a, 0x0e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x76,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
+	0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0e, 0x6d, 0x6f,
+	0x64, 0x75, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x13, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4c,
+	0x6f, 0x67, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
+	0x0d, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22,
+	0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x03, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88,
+	0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88,
+	0x01, 0x01, 0x12, 0x31, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4c,
+	0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x48, 0x02, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73,
+	0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f,
+	0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x03, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76,
+	0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
+	0x5f, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
+	0x08, 0x48, 0x04, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x49, 0x6e, 0x63, 0x6f,
+	0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x64,
+	0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x06, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x52,
+	0x65, 0x67, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x5f,
+	0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x09, 0x68,
+	0x6f, 0x73, 0x74, 0x52, 0x65, 0x67, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72,
+	0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x10, 0x20, 0x01,
+	0x28, 0x05, 0x48, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x6e, 0x64,
+	0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
+	0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x48,
+	0x09, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67,
+	0x73, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x6f, 0x67, 0x73,
+	0x5f, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x11, 0x20, 0x01,
+	0x28, 0x05, 0x48, 0x0a, 0x52, 0x11, 0x61, 0x70, 0x70, 0x4c, 0x6f, 0x67, 0x73, 0x50, 0x65, 0x72,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6e,
+	0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08,
+	0x48, 0x0b, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x88,
+	0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x6c,
+	0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0c, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75,
+	0x64, 0x65, 0x41, 0x6c, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x63, 0x61, 0x63, 0x68,
+	0x65, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08,
+	0x48, 0x0d, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f,
+	0x72, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72,
+	0x64, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x48, 0x0e, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x53,
+	0x68, 0x61, 0x72, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61,
+	0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f,
+	0x74, 0x69, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42,
+	0x14, 0x0a, 0x12, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6c, 0x6f, 0x67, 0x5f,
+	0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
+	0x65, 0x5f, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06,
+	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x63, 0x6f, 0x6d, 0x62, 0x69,
+	0x6e, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, 0x0d, 0x0a,
+	0x0b, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x42, 0x10, 0x0a, 0x0e,
+	0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x13,
+	0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c,
+	0x6f, 0x67, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x6f, 0x67, 0x73,
+	0x5f, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x0f, 0x0a, 0x0d,
+	0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x42, 0x0e, 0x0a,
+	0x0c, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x42, 0x11, 0x0a,
+	0x0f, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
+	0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x22,
+	0xb3, 0x01, 0x0a, 0x0f, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x31, 0x0a, 0x06,
+	0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73,
+	0x65, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12,
+	0x27, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x6e,
+	0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66,
+	0x73, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x64,
+	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xa6, 0x02, 0x0a, 0x0e, 0x4c, 0x6f, 0x67, 0x55, 0x73, 0x61,
+	0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73,
+	0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09,
+	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a,
+	0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x1e, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x05, 0x48, 0x02, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48,
+	0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x74,
+	0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48,
+	0x04, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12,
+	0x1d, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x05, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d,
+	0x0a, 0x0b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a,
+	0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09,
+	0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f,
+	0x75, 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69,
+	0x7a, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0xa9,
+	0x03, 0x0a, 0x0f, 0x4c, 0x6f, 0x67, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x76,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09,
+	0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08,
+	0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
+	0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10,
+	0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x73,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75,
+	0x74, 0x69, 0x6f, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10,
+	0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e,
+	0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d,
+	0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20,
+	0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x75, 0x73, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73,
+	0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52,
+	0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01,
+	0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42,
+	0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x13, 0x0a, 0x11,
+	0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x75, 0x72,
+	0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x5f, 0x76, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65,
+	0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0x89, 0x01, 0x0a, 0x10, 0x4c,
+	0x6f, 0x67, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x2f, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x55, 0x73,
+	0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65,
+	0x12, 0x38, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4c, 0x6f,
+	0x67, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x00, 0x52, 0x07,
+	0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73,
+	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6c,
+	0x6f, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_log_service_proto_rawDescOnce sync.Once
+	file_log_service_proto_rawDescData = file_log_service_proto_rawDesc
+)
+
+func file_log_service_proto_rawDescGZIP() []byte {
+	file_log_service_proto_rawDescOnce.Do(func() {
+		file_log_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_log_service_proto_rawDescData)
+	})
+	return file_log_service_proto_rawDescData
+}
+
+var file_log_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_log_service_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
+var file_log_service_proto_goTypes = []interface{}{
+	(LogServiceError_ErrorCode)(0), // 0: appengine.LogServiceError.ErrorCode
+	(*LogServiceError)(nil),        // 1: appengine.LogServiceError
+	(*UserAppLogLine)(nil),         // 2: appengine.UserAppLogLine
+	(*UserAppLogGroup)(nil),        // 3: appengine.UserAppLogGroup
+	(*FlushRequest)(nil),           // 4: appengine.FlushRequest
+	(*SetStatusRequest)(nil),       // 5: appengine.SetStatusRequest
+	(*LogOffset)(nil),              // 6: appengine.LogOffset
+	(*LogLine)(nil),                // 7: appengine.LogLine
+	(*RequestLog)(nil),             // 8: appengine.RequestLog
+	(*LogModuleVersion)(nil),       // 9: appengine.LogModuleVersion
+	(*LogReadRequest)(nil),         // 10: appengine.LogReadRequest
+	(*LogReadResponse)(nil),        // 11: appengine.LogReadResponse
+	(*LogUsageRecord)(nil),         // 12: appengine.LogUsageRecord
+	(*LogUsageRequest)(nil),        // 13: appengine.LogUsageRequest
+	(*LogUsageResponse)(nil),       // 14: appengine.LogUsageResponse
+}
+var file_log_service_proto_depIdxs = []int32{
+	2,  // 0: appengine.UserAppLogGroup.log_line:type_name -> appengine.UserAppLogLine
+	6,  // 1: appengine.RequestLog.offset:type_name -> appengine.LogOffset
+	7,  // 2: appengine.RequestLog.line:type_name -> appengine.LogLine
+	9,  // 3: appengine.LogReadRequest.module_version:type_name -> appengine.LogModuleVersion
+	6,  // 4: appengine.LogReadRequest.offset:type_name -> appengine.LogOffset
+	8,  // 5: appengine.LogReadResponse.log:type_name -> appengine.RequestLog
+	6,  // 6: appengine.LogReadResponse.offset:type_name -> appengine.LogOffset
+	12, // 7: appengine.LogUsageResponse.usage:type_name -> appengine.LogUsageRecord
+	12, // 8: appengine.LogUsageResponse.summary:type_name -> appengine.LogUsageRecord
+	9,  // [9:9] is the sub-list for method output_type
+	9,  // [9:9] is the sub-list for method input_type
+	9,  // [9:9] is the sub-list for extension type_name
+	9,  // [9:9] is the sub-list for extension extendee
+	0,  // [0:9] is the sub-list for field type_name
+}
+
+func init() { file_log_service_proto_init() }
+func file_log_service_proto_init() {
+	if File_log_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_log_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LogServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UserAppLogLine); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UserAppLogGroup); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FlushRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetStatusRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LogOffset); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LogLine); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RequestLog); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LogModuleVersion); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LogReadRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LogReadResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LogUsageRecord); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LogUsageRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_log_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LogUsageResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_log_service_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	file_log_service_proto_msgTypes[5].OneofWrappers = []interface{}{}
+	file_log_service_proto_msgTypes[7].OneofWrappers = []interface{}{}
+	file_log_service_proto_msgTypes[8].OneofWrappers = []interface{}{}
+	file_log_service_proto_msgTypes[9].OneofWrappers = []interface{}{}
+	file_log_service_proto_msgTypes[10].OneofWrappers = []interface{}{}
+	file_log_service_proto_msgTypes[11].OneofWrappers = []interface{}{}
+	file_log_service_proto_msgTypes[12].OneofWrappers = []interface{}{}
+	file_log_service_proto_msgTypes[13].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_log_service_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   14,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_log_service_proto_goTypes,
+		DependencyIndexes: file_log_service_proto_depIdxs,
+		EnumInfos:         file_log_service_proto_enumTypes,
+		MessageInfos:      file_log_service_proto_msgTypes,
+	}.Build()
+	File_log_service_proto = out.File
+	file_log_service_proto_rawDesc = nil
+	file_log_service_proto_goTypes = nil
+	file_log_service_proto_depIdxs = nil
 }
diff --git a/internal/log/log_service.proto b/internal/log/log_service.proto
index 8981dc47..ff42e38a 100644
--- a/internal/log/log_service.proto
+++ b/internal/log/log_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "log";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/log";
 
 package appengine;
 
@@ -12,9 +12,9 @@ message LogServiceError {
 }
 
 message UserAppLogLine {
-  required int64 timestamp_usec = 1;
-  required int64 level = 2;
-  required string message = 3;
+  int64 timestamp_usec = 1;
+  int64 level = 2;
+  string message = 3;
 }
 
 message UserAppLogGroup {
@@ -26,7 +26,7 @@ message FlushRequest {
 }
 
 message SetStatusRequest {
-  required string status = 1;
+ string status = 1;
 }
 
 
@@ -35,32 +35,32 @@ message LogOffset {
 }
 
 message LogLine {
-  required int64 time = 1;
-  required int32 level = 2;
-  required string log_message = 3;
+ int64 time = 1;
+ int32 level = 2;
+ string log_message = 3;
 }
 
 message RequestLog {
-  required string app_id = 1;
-  optional string module_id = 37 [default="default"];
-  required string version_id = 2;
-  required bytes request_id = 3;
+ string app_id = 1;
+  optional string module_id = 37 ;
+ string version_id = 2;
+ bytes request_id = 3;
   optional LogOffset offset = 35;
-  required string ip = 4;
+ string ip = 4;
   optional string nickname = 5;
-  required int64 start_time = 6;
-  required int64 end_time = 7;
-  required int64 latency = 8;
-  required int64 mcycles = 9;
-  required string method = 10;
-  required string resource = 11;
-  required string http_version = 12;
-  required int32 status = 13;
-  required int64 response_size = 14;
+ int64 start_time = 6;
+ int64 end_time = 7;
+ int64 latency = 8;
+ int64 mcycles = 9;
+ string method = 10;
+ string resource = 11;
+ string http_version = 12;
+ int32 status = 13;
+ int64 response_size = 14;
   optional string referrer = 15;
   optional string user_agent = 16;
-  required string url_map_entry = 17;
-  required string combined = 18;
+ string url_map_entry = 17;
+ string combined = 18;
   optional int64 api_mcycles = 19;
   optional string host = 20;
   optional double cost = 21;
@@ -70,8 +70,8 @@ message RequestLog {
 
   optional bool was_loading_request = 24;
   optional int64 pending_time = 25;
-  optional int32 replica_index = 26 [default = -1];
-  optional bool finished = 27 [default = true];
+  optional int32 replica_index = 26;
+  optional bool finished = 27 ;
   optional bytes clone_key = 28;
 
   repeated LogLine line = 29;
@@ -88,12 +88,12 @@ message RequestLog {
 }
 
 message LogModuleVersion {
-  optional string module_id = 1 [default="default"];
+  optional string module_id = 1 ;
   optional string version_id = 2;
 }
 
 message LogReadRequest {
-  required string app_id = 1;
+ string app_id = 1;
   repeated string version_id = 2;
   repeated LogModuleVersion module_version = 19;
 
@@ -134,11 +134,11 @@ message LogUsageRecord {
 }
 
 message LogUsageRequest {
-  required string app_id = 1;
+ string app_id = 1;
   repeated string version_id = 2;
   optional int32 start_time = 3;
   optional int32 end_time = 4;
-  optional uint32 resolution_hours = 5 [default = 1];
+  optional uint32 resolution_hours = 5;
   optional bool combine_versions = 6;
   optional int32 usage_version = 7;
   optional bool versions_only = 8;
diff --git a/internal/mail/mail_service.pb.go b/internal/mail/mail_service.pb.go
index f9c9cae9..d4470952 100644
--- a/internal/mail/mail_service.pb.go
+++ b/internal/mail/mail_service.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/mail/mail_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: mail_service.proto
 
 package mail
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 MailServiceError_ErrorCode int32
 
@@ -30,326 +32,490 @@ const (
 	MailServiceError_INVALID_CONTENT_ID      MailServiceError_ErrorCode = 6
 )
 
-var MailServiceError_ErrorCode_name = map[int32]string{
-	0: "OK",
-	1: "INTERNAL_ERROR",
-	2: "BAD_REQUEST",
-	3: "UNAUTHORIZED_SENDER",
-	4: "INVALID_ATTACHMENT_TYPE",
-	5: "INVALID_HEADER_NAME",
-	6: "INVALID_CONTENT_ID",
-}
-var MailServiceError_ErrorCode_value = map[string]int32{
-	"OK":                      0,
-	"INTERNAL_ERROR":          1,
-	"BAD_REQUEST":             2,
-	"UNAUTHORIZED_SENDER":     3,
-	"INVALID_ATTACHMENT_TYPE": 4,
-	"INVALID_HEADER_NAME":     5,
-	"INVALID_CONTENT_ID":      6,
-}
+// Enum value maps for MailServiceError_ErrorCode.
+var (
+	MailServiceError_ErrorCode_name = map[int32]string{
+		0: "OK",
+		1: "INTERNAL_ERROR",
+		2: "BAD_REQUEST",
+		3: "UNAUTHORIZED_SENDER",
+		4: "INVALID_ATTACHMENT_TYPE",
+		5: "INVALID_HEADER_NAME",
+		6: "INVALID_CONTENT_ID",
+	}
+	MailServiceError_ErrorCode_value = map[string]int32{
+		"OK":                      0,
+		"INTERNAL_ERROR":          1,
+		"BAD_REQUEST":             2,
+		"UNAUTHORIZED_SENDER":     3,
+		"INVALID_ATTACHMENT_TYPE": 4,
+		"INVALID_HEADER_NAME":     5,
+		"INVALID_CONTENT_ID":      6,
+	}
+)
 
 func (x MailServiceError_ErrorCode) Enum() *MailServiceError_ErrorCode {
 	p := new(MailServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x MailServiceError_ErrorCode) String() string {
-	return proto.EnumName(MailServiceError_ErrorCode_name, int32(x))
-}
-func (x *MailServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(MailServiceError_ErrorCode_value, data, "MailServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = MailServiceError_ErrorCode(value)
-	return nil
-}
-func (MailServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_mail_service_78722be3c4c01d17, []int{0, 0}
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type MailServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (MailServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_mail_service_proto_enumTypes[0].Descriptor()
 }
 
-func (m *MailServiceError) Reset()         { *m = MailServiceError{} }
-func (m *MailServiceError) String() string { return proto.CompactTextString(m) }
-func (*MailServiceError) ProtoMessage()    {}
-func (*MailServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_mail_service_78722be3c4c01d17, []int{0}
+func (MailServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_mail_service_proto_enumTypes[0]
 }
-func (m *MailServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MailServiceError.Unmarshal(m, b)
+
+func (x MailServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *MailServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MailServiceError.Marshal(b, m, deterministic)
+
+// Deprecated: Use MailServiceError_ErrorCode.Descriptor instead.
+func (MailServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
+	return file_mail_service_proto_rawDescGZIP(), []int{0, 0}
 }
-func (dst *MailServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MailServiceError.Merge(dst, src)
+
+type MailServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *MailServiceError) XXX_Size() int {
-	return xxx_messageInfo_MailServiceError.Size(m)
+
+func (x *MailServiceError) Reset() {
+	*x = MailServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_mail_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *MailServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_MailServiceError.DiscardUnknown(m)
+
+func (x *MailServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_MailServiceError proto.InternalMessageInfo
+func (*MailServiceError) ProtoMessage() {}
 
-type MailAttachment struct {
-	FileName             *string  `protobuf:"bytes,1,req,name=FileName" json:"FileName,omitempty"`
-	Data                 []byte   `protobuf:"bytes,2,req,name=Data" json:"Data,omitempty"`
-	ContentID            *string  `protobuf:"bytes,3,opt,name=ContentID" json:"ContentID,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *MailServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_mail_service_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)
 }
 
-func (m *MailAttachment) Reset()         { *m = MailAttachment{} }
-func (m *MailAttachment) String() string { return proto.CompactTextString(m) }
-func (*MailAttachment) ProtoMessage()    {}
-func (*MailAttachment) Descriptor() ([]byte, []int) {
-	return fileDescriptor_mail_service_78722be3c4c01d17, []int{1}
-}
-func (m *MailAttachment) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MailAttachment.Unmarshal(m, b)
+// Deprecated: Use MailServiceError.ProtoReflect.Descriptor instead.
+func (*MailServiceError) Descriptor() ([]byte, []int) {
+	return file_mail_service_proto_rawDescGZIP(), []int{0}
 }
-func (m *MailAttachment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MailAttachment.Marshal(b, m, deterministic)
+
+type MailAttachment struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	FileName  string  `protobuf:"bytes,1,opt,name=FileName,proto3" json:"FileName,omitempty"`
+	Data      []byte  `protobuf:"bytes,2,opt,name=Data,proto3" json:"Data,omitempty"`
+	ContentID *string `protobuf:"bytes,3,opt,name=ContentID,proto3,oneof" json:"ContentID,omitempty"`
 }
-func (dst *MailAttachment) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MailAttachment.Merge(dst, src)
+
+func (x *MailAttachment) Reset() {
+	*x = MailAttachment{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_mail_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *MailAttachment) XXX_Size() int {
-	return xxx_messageInfo_MailAttachment.Size(m)
+
+func (x *MailAttachment) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *MailAttachment) XXX_DiscardUnknown() {
-	xxx_messageInfo_MailAttachment.DiscardUnknown(m)
+
+func (*MailAttachment) ProtoMessage() {}
+
+func (x *MailAttachment) ProtoReflect() protoreflect.Message {
+	mi := &file_mail_service_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)
 }
 
-var xxx_messageInfo_MailAttachment proto.InternalMessageInfo
+// Deprecated: Use MailAttachment.ProtoReflect.Descriptor instead.
+func (*MailAttachment) Descriptor() ([]byte, []int) {
+	return file_mail_service_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *MailAttachment) GetFileName() string {
-	if m != nil && m.FileName != nil {
-		return *m.FileName
+func (x *MailAttachment) GetFileName() string {
+	if x != nil {
+		return x.FileName
 	}
 	return ""
 }
 
-func (m *MailAttachment) GetData() []byte {
-	if m != nil {
-		return m.Data
+func (x *MailAttachment) GetData() []byte {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *MailAttachment) GetContentID() string {
-	if m != nil && m.ContentID != nil {
-		return *m.ContentID
+func (x *MailAttachment) GetContentID() string {
+	if x != nil && x.ContentID != nil {
+		return *x.ContentID
 	}
 	return ""
 }
 
 type MailHeader struct {
-	Name                 *string  `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	Value                *string  `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *MailHeader) Reset()         { *m = MailHeader{} }
-func (m *MailHeader) String() string { return proto.CompactTextString(m) }
-func (*MailHeader) ProtoMessage()    {}
-func (*MailHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_mail_service_78722be3c4c01d17, []int{2}
-}
-func (m *MailHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MailHeader.Unmarshal(m, b)
+	Name  string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (m *MailHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MailHeader.Marshal(b, m, deterministic)
-}
-func (dst *MailHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MailHeader.Merge(dst, src)
+
+func (x *MailHeader) Reset() {
+	*x = MailHeader{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_mail_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *MailHeader) XXX_Size() int {
-	return xxx_messageInfo_MailHeader.Size(m)
+
+func (x *MailHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *MailHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_MailHeader.DiscardUnknown(m)
+
+func (*MailHeader) ProtoMessage() {}
+
+func (x *MailHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_mail_service_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)
 }
 
-var xxx_messageInfo_MailHeader proto.InternalMessageInfo
+// Deprecated: Use MailHeader.ProtoReflect.Descriptor instead.
+func (*MailHeader) Descriptor() ([]byte, []int) {
+	return file_mail_service_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *MailHeader) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *MailHeader) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *MailHeader) GetValue() string {
-	if m != nil && m.Value != nil {
-		return *m.Value
+func (x *MailHeader) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
 type MailMessage struct {
-	Sender               *string           `protobuf:"bytes,1,req,name=Sender" json:"Sender,omitempty"`
-	ReplyTo              *string           `protobuf:"bytes,2,opt,name=ReplyTo" json:"ReplyTo,omitempty"`
-	To                   []string          `protobuf:"bytes,3,rep,name=To" json:"To,omitempty"`
-	Cc                   []string          `protobuf:"bytes,4,rep,name=Cc" json:"Cc,omitempty"`
-	Bcc                  []string          `protobuf:"bytes,5,rep,name=Bcc" json:"Bcc,omitempty"`
-	Subject              *string           `protobuf:"bytes,6,req,name=Subject" json:"Subject,omitempty"`
-	TextBody             *string           `protobuf:"bytes,7,opt,name=TextBody" json:"TextBody,omitempty"`
-	HtmlBody             *string           `protobuf:"bytes,8,opt,name=HtmlBody" json:"HtmlBody,omitempty"`
-	Attachment           []*MailAttachment `protobuf:"bytes,9,rep,name=Attachment" json:"Attachment,omitempty"`
-	Header               []*MailHeader     `protobuf:"bytes,10,rep,name=Header" json:"Header,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *MailMessage) Reset()         { *m = MailMessage{} }
-func (m *MailMessage) String() string { return proto.CompactTextString(m) }
-func (*MailMessage) ProtoMessage()    {}
-func (*MailMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_mail_service_78722be3c4c01d17, []int{3}
-}
-func (m *MailMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MailMessage.Unmarshal(m, b)
-}
-func (m *MailMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MailMessage.Marshal(b, m, deterministic)
-}
-func (dst *MailMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MailMessage.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Sender     string            `protobuf:"bytes,1,opt,name=Sender,proto3" json:"Sender,omitempty"`
+	ReplyTo    *string           `protobuf:"bytes,2,opt,name=ReplyTo,proto3,oneof" json:"ReplyTo,omitempty"`
+	To         []string          `protobuf:"bytes,3,rep,name=To,proto3" json:"To,omitempty"`
+	Cc         []string          `protobuf:"bytes,4,rep,name=Cc,proto3" json:"Cc,omitempty"`
+	Bcc        []string          `protobuf:"bytes,5,rep,name=Bcc,proto3" json:"Bcc,omitempty"`
+	Subject    string            `protobuf:"bytes,6,opt,name=Subject,proto3" json:"Subject,omitempty"`
+	TextBody   *string           `protobuf:"bytes,7,opt,name=TextBody,proto3,oneof" json:"TextBody,omitempty"`
+	HtmlBody   *string           `protobuf:"bytes,8,opt,name=HtmlBody,proto3,oneof" json:"HtmlBody,omitempty"`
+	Attachment []*MailAttachment `protobuf:"bytes,9,rep,name=Attachment,proto3" json:"Attachment,omitempty"`
+	Header     []*MailHeader     `protobuf:"bytes,10,rep,name=Header,proto3" json:"Header,omitempty"`
+}
+
+func (x *MailMessage) Reset() {
+	*x = MailMessage{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_mail_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *MailMessage) XXX_Size() int {
-	return xxx_messageInfo_MailMessage.Size(m)
+
+func (x *MailMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *MailMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_MailMessage.DiscardUnknown(m)
+
+func (*MailMessage) ProtoMessage() {}
+
+func (x *MailMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_mail_service_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)
 }
 
-var xxx_messageInfo_MailMessage proto.InternalMessageInfo
+// Deprecated: Use MailMessage.ProtoReflect.Descriptor instead.
+func (*MailMessage) Descriptor() ([]byte, []int) {
+	return file_mail_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *MailMessage) GetSender() string {
-	if m != nil && m.Sender != nil {
-		return *m.Sender
+func (x *MailMessage) GetSender() string {
+	if x != nil {
+		return x.Sender
 	}
 	return ""
 }
 
-func (m *MailMessage) GetReplyTo() string {
-	if m != nil && m.ReplyTo != nil {
-		return *m.ReplyTo
+func (x *MailMessage) GetReplyTo() string {
+	if x != nil && x.ReplyTo != nil {
+		return *x.ReplyTo
 	}
 	return ""
 }
 
-func (m *MailMessage) GetTo() []string {
-	if m != nil {
-		return m.To
+func (x *MailMessage) GetTo() []string {
+	if x != nil {
+		return x.To
 	}
 	return nil
 }
 
-func (m *MailMessage) GetCc() []string {
-	if m != nil {
-		return m.Cc
+func (x *MailMessage) GetCc() []string {
+	if x != nil {
+		return x.Cc
 	}
 	return nil
 }
 
-func (m *MailMessage) GetBcc() []string {
-	if m != nil {
-		return m.Bcc
+func (x *MailMessage) GetBcc() []string {
+	if x != nil {
+		return x.Bcc
 	}
 	return nil
 }
 
-func (m *MailMessage) GetSubject() string {
-	if m != nil && m.Subject != nil {
-		return *m.Subject
+func (x *MailMessage) GetSubject() string {
+	if x != nil {
+		return x.Subject
 	}
 	return ""
 }
 
-func (m *MailMessage) GetTextBody() string {
-	if m != nil && m.TextBody != nil {
-		return *m.TextBody
+func (x *MailMessage) GetTextBody() string {
+	if x != nil && x.TextBody != nil {
+		return *x.TextBody
 	}
 	return ""
 }
 
-func (m *MailMessage) GetHtmlBody() string {
-	if m != nil && m.HtmlBody != nil {
-		return *m.HtmlBody
+func (x *MailMessage) GetHtmlBody() string {
+	if x != nil && x.HtmlBody != nil {
+		return *x.HtmlBody
 	}
 	return ""
 }
 
-func (m *MailMessage) GetAttachment() []*MailAttachment {
-	if m != nil {
-		return m.Attachment
+func (x *MailMessage) GetAttachment() []*MailAttachment {
+	if x != nil {
+		return x.Attachment
 	}
 	return nil
 }
 
-func (m *MailMessage) GetHeader() []*MailHeader {
-	if m != nil {
-		return m.Header
+func (x *MailMessage) GetHeader() []*MailHeader {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*MailServiceError)(nil), "appengine.MailServiceError")
-	proto.RegisterType((*MailAttachment)(nil), "appengine.MailAttachment")
-	proto.RegisterType((*MailHeader)(nil), "appengine.MailHeader")
-	proto.RegisterType((*MailMessage)(nil), "appengine.MailMessage")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/mail/mail_service.proto", fileDescriptor_mail_service_78722be3c4c01d17)
-}
-
-var fileDescriptor_mail_service_78722be3c4c01d17 = []byte{
-	// 480 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x92, 0xcf, 0x6e, 0xd3, 0x40,
-	0x10, 0xc6, 0x89, 0x9d, 0xb8, 0xf5, 0x04, 0x05, 0x6b, 0x81, 0x76, 0xf9, 0x73, 0x88, 0x72, 0xca,
-	0x85, 0x44, 0xe2, 0x80, 0x84, 0xc4, 0xc5, 0xb1, 0x17, 0xc5, 0xa2, 0x71, 0x60, 0xb3, 0x41, 0xa2,
-	0x07, 0xac, 0xc5, 0x19, 0x19, 0x23, 0xc7, 0x1b, 0x39, 0xdb, 0x8a, 0x3e, 0x0d, 0x4f, 0xc0, 0x8d,
-	0x07, 0x44, 0x6b, 0xc7, 0x09, 0xf4, 0x62, 0xcd, 0x6f, 0xbf, 0xf9, 0x66, 0xac, 0x4f, 0x03, 0xef,
-	0x32, 0xa5, 0xb2, 0x02, 0x27, 0x99, 0x2a, 0x64, 0x99, 0x4d, 0x54, 0x95, 0x4d, 0xe5, 0x6e, 0x87,
-	0x65, 0x96, 0x97, 0x38, 0xcd, 0x4b, 0x8d, 0x55, 0x29, 0x8b, 0xe9, 0x56, 0xe6, 0xcd, 0x27, 0xd9,
-	0x63, 0x75, 0x9b, 0xa7, 0x38, 0xd9, 0x55, 0x4a, 0x2b, 0xe2, 0x1e, 0x7b, 0x47, 0x7f, 0x3a, 0xe0,
-	0x2d, 0x64, 0x5e, 0xac, 0x9a, 0x06, 0x56, 0x55, 0xaa, 0x1a, 0xfd, 0xea, 0x80, 0x5b, 0x57, 0x81,
-	0xda, 0x20, 0x71, 0xc0, 0x5a, 0x7e, 0xf0, 0x1e, 0x10, 0x02, 0x83, 0x28, 0x16, 0x8c, 0xc7, 0xfe,
-	0x55, 0xc2, 0x38, 0x5f, 0x72, 0xaf, 0x43, 0x1e, 0x41, 0x7f, 0xe6, 0x87, 0x09, 0x67, 0x9f, 0xd6,
-	0x6c, 0x25, 0x3c, 0x8b, 0x5c, 0xc2, 0xe3, 0x75, 0xec, 0xaf, 0xc5, 0x7c, 0xc9, 0xa3, 0x6b, 0x16,
-	0x26, 0x2b, 0x16, 0x87, 0x8c, 0x7b, 0x36, 0x79, 0x01, 0x97, 0x51, 0xfc, 0xd9, 0xbf, 0x8a, 0xc2,
-	0xc4, 0x17, 0xc2, 0x0f, 0xe6, 0x0b, 0x16, 0x8b, 0x44, 0x7c, 0xf9, 0xc8, 0xbc, 0xae, 0x71, 0xb5,
-	0xe2, 0x9c, 0xf9, 0x21, 0xe3, 0x49, 0xec, 0x2f, 0x98, 0xd7, 0x23, 0x17, 0x40, 0x5a, 0x21, 0x58,
-	0xc6, 0xc2, 0x58, 0xa2, 0xd0, 0x73, 0x46, 0x5f, 0x61, 0x60, 0xfe, 0xda, 0xd7, 0x5a, 0xa6, 0xdf,
-	0xb7, 0x58, 0x6a, 0xf2, 0x1c, 0xce, 0xdf, 0xe7, 0x05, 0xc6, 0x72, 0x8b, 0xb4, 0x33, 0xb4, 0xc6,
-	0x2e, 0x3f, 0x32, 0x21, 0xd0, 0x0d, 0xa5, 0x96, 0xd4, 0x1a, 0x5a, 0xe3, 0x87, 0xbc, 0xae, 0xc9,
-	0x4b, 0x70, 0x03, 0x55, 0x6a, 0x2c, 0x75, 0x14, 0x52, 0x7b, 0xd8, 0x19, 0xbb, 0xfc, 0xf4, 0x30,
-	0x7a, 0x03, 0x60, 0xe6, 0xcf, 0x51, 0x6e, 0xb0, 0x32, 0xfe, 0xf2, 0x34, 0xb7, 0xae, 0xc9, 0x13,
-	0xe8, 0xdd, 0xca, 0xe2, 0x06, 0xeb, 0xa1, 0x2e, 0x6f, 0x60, 0xf4, 0xdb, 0x82, 0xbe, 0x31, 0x2e,
-	0x70, 0xbf, 0x97, 0x19, 0x92, 0x0b, 0x70, 0x56, 0x58, 0x6e, 0xb0, 0x3a, 0x78, 0x0f, 0x44, 0x28,
-	0x9c, 0x71, 0xdc, 0x15, 0x77, 0x42, 0x51, 0xab, 0xde, 0xdd, 0x22, 0x19, 0x80, 0x25, 0x14, 0xb5,
-	0x87, 0xf6, 0xd8, 0xe5, 0x56, 0xc3, 0x41, 0x4a, 0xbb, 0x0d, 0x07, 0x29, 0xf1, 0xc0, 0x9e, 0xa5,
-	0x29, 0xed, 0xd5, 0x0f, 0xa6, 0x34, 0xb3, 0x56, 0x37, 0xdf, 0x7e, 0x60, 0xaa, 0xa9, 0x53, 0x2f,
-	0x69, 0xd1, 0x64, 0x22, 0xf0, 0xa7, 0x9e, 0xa9, 0xcd, 0x1d, 0x3d, 0xab, 0xd7, 0x1c, 0xd9, 0x68,
-	0x73, 0xbd, 0x2d, 0x6a, 0xed, 0xbc, 0xd1, 0x5a, 0x26, 0x6f, 0x01, 0x4e, 0xc9, 0x52, 0x77, 0x68,
-	0x8f, 0xfb, 0xaf, 0x9f, 0x4d, 0x8e, 0x47, 0x33, 0xf9, 0x3f, 0x7a, 0xfe, 0x4f, 0x33, 0x79, 0x05,
-	0x4e, 0x13, 0x1a, 0x85, 0xda, 0xf6, 0xf4, 0x9e, 0xad, 0x11, 0xf9, 0xa1, 0x69, 0xe6, 0x5c, 0x77,
-	0xcd, 0x7d, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x4e, 0xd3, 0x01, 0x27, 0xd0, 0x02, 0x00, 0x00,
+var File_mail_service_proto protoreflect.FileDescriptor
+
+var file_mail_service_proto_rawDesc = []byte{
+	0x0a, 0x12, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22,
+	0xb4, 0x01, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45,
+	0x72, 0x72, 0x6f, 0x72, 0x22, 0x9f, 0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f,
+	0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e,
+	0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0f,
+	0x0a, 0x0b, 0x42, 0x41, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x02, 0x12,
+	0x17, 0x0a, 0x13, 0x55, 0x4e, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a, 0x45, 0x44, 0x5f,
+	0x53, 0x45, 0x4e, 0x44, 0x45, 0x52, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4e, 0x56, 0x41,
+	0x4c, 0x49, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54,
+	0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44,
+	0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x05, 0x12, 0x16,
+	0x0a, 0x12, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e,
+	0x54, 0x5f, 0x49, 0x44, 0x10, 0x06, 0x22, 0x71, 0x0a, 0x0e, 0x4d, 0x61, 0x69, 0x6c, 0x41, 0x74,
+	0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65,
+	0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x46, 0x69, 0x6c, 0x65,
+	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74,
+	0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x43,
+	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
+	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x22, 0x36, 0x0a, 0x0a, 0x4d, 0x61, 0x69,
+	0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x22, 0xe2, 0x02, 0x0a, 0x0b, 0x4d, 0x61, 0x69, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x07, 0x52, 0x65, 0x70,
+	0x6c, 0x79, 0x54, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x52, 0x65,
+	0x70, 0x6c, 0x79, 0x54, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x6f, 0x18, 0x03,
+	0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x54, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x43, 0x63, 0x18, 0x04,
+	0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x43, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x63, 0x63, 0x18,
+	0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x42, 0x63, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75,
+	0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x75, 0x62,
+	0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x54, 0x65, 0x78, 0x74, 0x42, 0x6f, 0x64, 0x79,
+	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x54, 0x65, 0x78, 0x74, 0x42, 0x6f,
+	0x64, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x48, 0x74, 0x6d, 0x6c, 0x42, 0x6f, 0x64,
+	0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x48, 0x74, 0x6d, 0x6c, 0x42,
+	0x6f, 0x64, 0x79, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
+	0x6d, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x61, 0x69, 0x6c, 0x41, 0x74, 0x74, 0x61, 0x63,
+	0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e,
+	0x74, 0x12, 0x2d, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x61,
+	0x69, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x42, 0x0b, 0x0a, 0x09,
+	0x5f, 0x54, 0x65, 0x78, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x48, 0x74,
+	0x6d, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d,
+	0x61, 0x69, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_mail_service_proto_rawDescOnce sync.Once
+	file_mail_service_proto_rawDescData = file_mail_service_proto_rawDesc
+)
+
+func file_mail_service_proto_rawDescGZIP() []byte {
+	file_mail_service_proto_rawDescOnce.Do(func() {
+		file_mail_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_mail_service_proto_rawDescData)
+	})
+	return file_mail_service_proto_rawDescData
+}
+
+var file_mail_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_mail_service_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_mail_service_proto_goTypes = []interface{}{
+	(MailServiceError_ErrorCode)(0), // 0: appengine.MailServiceError.ErrorCode
+	(*MailServiceError)(nil),        // 1: appengine.MailServiceError
+	(*MailAttachment)(nil),          // 2: appengine.MailAttachment
+	(*MailHeader)(nil),              // 3: appengine.MailHeader
+	(*MailMessage)(nil),             // 4: appengine.MailMessage
+}
+var file_mail_service_proto_depIdxs = []int32{
+	2, // 0: appengine.MailMessage.Attachment:type_name -> appengine.MailAttachment
+	3, // 1: appengine.MailMessage.Header:type_name -> appengine.MailHeader
+	2, // [2:2] is the sub-list for method output_type
+	2, // [2:2] is the sub-list for method input_type
+	2, // [2:2] is the sub-list for extension type_name
+	2, // [2:2] is the sub-list for extension extendee
+	0, // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_mail_service_proto_init() }
+func file_mail_service_proto_init() {
+	if File_mail_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_mail_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MailServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_mail_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MailAttachment); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_mail_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MailHeader); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_mail_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MailMessage); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_mail_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_mail_service_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_mail_service_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   4,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_mail_service_proto_goTypes,
+		DependencyIndexes: file_mail_service_proto_depIdxs,
+		EnumInfos:         file_mail_service_proto_enumTypes,
+		MessageInfos:      file_mail_service_proto_msgTypes,
+	}.Build()
+	File_mail_service_proto = out.File
+	file_mail_service_proto_rawDesc = nil
+	file_mail_service_proto_goTypes = nil
+	file_mail_service_proto_depIdxs = nil
 }
diff --git a/internal/mail/mail_service.proto b/internal/mail/mail_service.proto
index 4e57b7aa..2d501fb3 100644
--- a/internal/mail/mail_service.proto
+++ b/internal/mail/mail_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "mail";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/mail";
 
 package appengine;
 
@@ -16,25 +16,25 @@ message MailServiceError {
 }
 
 message MailAttachment {
-  required string FileName = 1;
-  required bytes Data = 2;
+  string FileName = 1;
+  bytes Data = 2;
   optional string ContentID = 3;
 }
 
 message MailHeader {
-  required string name = 1;
-  required string value = 2;
+  string name = 1;
+  string value = 2;
 }
 
 message MailMessage {
-  required string Sender = 1;
+  string Sender = 1;
   optional string ReplyTo = 2;
 
   repeated string To = 3;
   repeated string Cc = 4;
   repeated string Bcc = 5;
 
-  required string Subject = 6;
+  string Subject = 6;
 
   optional string TextBody = 7;
   optional string HtmlBody = 8;
diff --git a/internal/memcache/memcache_service.pb.go b/internal/memcache/memcache_service.pb.go
index 09523bec..d83b656c 100644
--- a/internal/memcache/memcache_service.pb.go
+++ b/internal/memcache/memcache_service.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.28.1
-// 	protoc        v3.21.8
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
 // source: memcache_service.proto
 
 package memcache
@@ -70,16 +70,6 @@ func (x MemcacheServiceError_ErrorCode) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Do not use.
-func (x *MemcacheServiceError_ErrorCode) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = MemcacheServiceError_ErrorCode(num)
-	return nil
-}
-
 // Deprecated: Use MemcacheServiceError_ErrorCode.Descriptor instead.
 func (MemcacheServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{0, 0}
@@ -88,6 +78,7 @@ func (MemcacheServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
 type MemcacheSetRequest_SetPolicy int32
 
 const (
+	MemcacheSetRequest_NONE    MemcacheSetRequest_SetPolicy = 0
 	MemcacheSetRequest_SET     MemcacheSetRequest_SetPolicy = 1
 	MemcacheSetRequest_ADD     MemcacheSetRequest_SetPolicy = 2
 	MemcacheSetRequest_REPLACE MemcacheSetRequest_SetPolicy = 3
@@ -97,12 +88,14 @@ const (
 // Enum value maps for MemcacheSetRequest_SetPolicy.
 var (
 	MemcacheSetRequest_SetPolicy_name = map[int32]string{
+		0: "NONE",
 		1: "SET",
 		2: "ADD",
 		3: "REPLACE",
 		4: "CAS",
 	}
 	MemcacheSetRequest_SetPolicy_value = map[string]int32{
+		"NONE":    0,
 		"SET":     1,
 		"ADD":     2,
 		"REPLACE": 3,
@@ -132,16 +125,6 @@ func (x MemcacheSetRequest_SetPolicy) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Do not use.
-func (x *MemcacheSetRequest_SetPolicy) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = MemcacheSetRequest_SetPolicy(num)
-	return nil
-}
-
 // Deprecated: Use MemcacheSetRequest_SetPolicy.Descriptor instead.
 func (MemcacheSetRequest_SetPolicy) EnumDescriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{5, 0}
@@ -150,6 +133,7 @@ func (MemcacheSetRequest_SetPolicy) EnumDescriptor() ([]byte, []int) {
 type MemcacheSetResponse_SetStatusCode int32
 
 const (
+	MemcacheSetResponse_NONE       MemcacheSetResponse_SetStatusCode = 0
 	MemcacheSetResponse_STORED     MemcacheSetResponse_SetStatusCode = 1
 	MemcacheSetResponse_NOT_STORED MemcacheSetResponse_SetStatusCode = 2
 	MemcacheSetResponse_ERROR      MemcacheSetResponse_SetStatusCode = 3
@@ -159,12 +143,14 @@ const (
 // Enum value maps for MemcacheSetResponse_SetStatusCode.
 var (
 	MemcacheSetResponse_SetStatusCode_name = map[int32]string{
+		0: "NONE",
 		1: "STORED",
 		2: "NOT_STORED",
 		3: "ERROR",
 		4: "EXISTS",
 	}
 	MemcacheSetResponse_SetStatusCode_value = map[string]int32{
+		"NONE":       0,
 		"STORED":     1,
 		"NOT_STORED": 2,
 		"ERROR":      3,
@@ -194,16 +180,6 @@ func (x MemcacheSetResponse_SetStatusCode) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Do not use.
-func (x *MemcacheSetResponse_SetStatusCode) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = MemcacheSetResponse_SetStatusCode(num)
-	return nil
-}
-
 // Deprecated: Use MemcacheSetResponse_SetStatusCode.Descriptor instead.
 func (MemcacheSetResponse_SetStatusCode) EnumDescriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{6, 0}
@@ -212,6 +188,7 @@ func (MemcacheSetResponse_SetStatusCode) EnumDescriptor() ([]byte, []int) {
 type MemcacheDeleteResponse_DeleteStatusCode int32
 
 const (
+	MemcacheDeleteResponse_NONE      MemcacheDeleteResponse_DeleteStatusCode = 0
 	MemcacheDeleteResponse_DELETED   MemcacheDeleteResponse_DeleteStatusCode = 1
 	MemcacheDeleteResponse_NOT_FOUND MemcacheDeleteResponse_DeleteStatusCode = 2
 )
@@ -219,10 +196,12 @@ const (
 // Enum value maps for MemcacheDeleteResponse_DeleteStatusCode.
 var (
 	MemcacheDeleteResponse_DeleteStatusCode_name = map[int32]string{
+		0: "NONE",
 		1: "DELETED",
 		2: "NOT_FOUND",
 	}
 	MemcacheDeleteResponse_DeleteStatusCode_value = map[string]int32{
+		"NONE":      0,
 		"DELETED":   1,
 		"NOT_FOUND": 2,
 	}
@@ -250,16 +229,6 @@ func (x MemcacheDeleteResponse_DeleteStatusCode) Number() protoreflect.EnumNumbe
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Do not use.
-func (x *MemcacheDeleteResponse_DeleteStatusCode) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = MemcacheDeleteResponse_DeleteStatusCode(num)
-	return nil
-}
-
 // Deprecated: Use MemcacheDeleteResponse_DeleteStatusCode.Descriptor instead.
 func (MemcacheDeleteResponse_DeleteStatusCode) EnumDescriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{8, 0}
@@ -268,6 +237,7 @@ func (MemcacheDeleteResponse_DeleteStatusCode) EnumDescriptor() ([]byte, []int)
 type MemcacheIncrementRequest_Direction int32
 
 const (
+	MemcacheIncrementRequest_NONE      MemcacheIncrementRequest_Direction = 0
 	MemcacheIncrementRequest_INCREMENT MemcacheIncrementRequest_Direction = 1
 	MemcacheIncrementRequest_DECREMENT MemcacheIncrementRequest_Direction = 2
 )
@@ -275,10 +245,12 @@ const (
 // Enum value maps for MemcacheIncrementRequest_Direction.
 var (
 	MemcacheIncrementRequest_Direction_name = map[int32]string{
+		0: "NONE",
 		1: "INCREMENT",
 		2: "DECREMENT",
 	}
 	MemcacheIncrementRequest_Direction_value = map[string]int32{
+		"NONE":      0,
 		"INCREMENT": 1,
 		"DECREMENT": 2,
 	}
@@ -306,16 +278,6 @@ func (x MemcacheIncrementRequest_Direction) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Do not use.
-func (x *MemcacheIncrementRequest_Direction) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = MemcacheIncrementRequest_Direction(num)
-	return nil
-}
-
 // Deprecated: Use MemcacheIncrementRequest_Direction.Descriptor instead.
 func (MemcacheIncrementRequest_Direction) EnumDescriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{9, 0}
@@ -324,6 +286,7 @@ func (MemcacheIncrementRequest_Direction) EnumDescriptor() ([]byte, []int) {
 type MemcacheIncrementResponse_IncrementStatusCode int32
 
 const (
+	MemcacheIncrementResponse_NONE        MemcacheIncrementResponse_IncrementStatusCode = 0
 	MemcacheIncrementResponse_OK          MemcacheIncrementResponse_IncrementStatusCode = 1
 	MemcacheIncrementResponse_NOT_CHANGED MemcacheIncrementResponse_IncrementStatusCode = 2
 	MemcacheIncrementResponse_ERROR       MemcacheIncrementResponse_IncrementStatusCode = 3
@@ -332,11 +295,13 @@ const (
 // Enum value maps for MemcacheIncrementResponse_IncrementStatusCode.
 var (
 	MemcacheIncrementResponse_IncrementStatusCode_name = map[int32]string{
+		0: "NONE",
 		1: "OK",
 		2: "NOT_CHANGED",
 		3: "ERROR",
 	}
 	MemcacheIncrementResponse_IncrementStatusCode_value = map[string]int32{
+		"NONE":        0,
 		"OK":          1,
 		"NOT_CHANGED": 2,
 		"ERROR":       3,
@@ -365,16 +330,6 @@ func (x MemcacheIncrementResponse_IncrementStatusCode) Number() protoreflect.Enu
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Do not use.
-func (x *MemcacheIncrementResponse_IncrementStatusCode) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = MemcacheIncrementResponse_IncrementStatusCode(num)
-	return nil
-}
-
 // Deprecated: Use MemcacheIncrementResponse_IncrementStatusCode.Descriptor instead.
 func (MemcacheIncrementResponse_IncrementStatusCode) EnumDescriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{10, 0}
@@ -423,15 +378,15 @@ type AppOverride struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	AppId *string `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
-	// Deprecated: Do not use.
-	NumMemcachegBackends *int32 `protobuf:"varint,2,opt,name=num_memcacheg_backends,json=numMemcachegBackends" json:"num_memcacheg_backends,omitempty"`
-	// Deprecated: Do not use.
-	IgnoreShardlock *bool `protobuf:"varint,3,opt,name=ignore_shardlock,json=ignoreShardlock" json:"ignore_shardlock,omitempty"`
-	// Deprecated: Do not use.
-	MemcachePoolHint *string `protobuf:"bytes,4,opt,name=memcache_pool_hint,json=memcachePoolHint" json:"memcache_pool_hint,omitempty"`
-	// Deprecated: Do not use.
-	MemcacheShardingStrategy []byte `protobuf:"bytes,5,opt,name=memcache_sharding_strategy,json=memcacheShardingStrategy" json:"memcache_sharding_strategy,omitempty"`
+	AppId string `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+	// Deprecated: Marked as deprecated in memcache_service.proto.
+	NumMemcachegBackends *int32 `protobuf:"varint,2,opt,name=num_memcacheg_backends,json=numMemcachegBackends,proto3,oneof" json:"num_memcacheg_backends,omitempty"`
+	// Deprecated: Marked as deprecated in memcache_service.proto.
+	IgnoreShardlock *bool `protobuf:"varint,3,opt,name=ignore_shardlock,json=ignoreShardlock,proto3,oneof" json:"ignore_shardlock,omitempty"`
+	// Deprecated: Marked as deprecated in memcache_service.proto.
+	MemcachePoolHint *string `protobuf:"bytes,4,opt,name=memcache_pool_hint,json=memcachePoolHint,proto3,oneof" json:"memcache_pool_hint,omitempty"`
+	// Deprecated: Marked as deprecated in memcache_service.proto.
+	MemcacheShardingStrategy []byte `protobuf:"bytes,5,opt,name=memcache_sharding_strategy,json=memcacheShardingStrategy,proto3,oneof" json:"memcache_sharding_strategy,omitempty"`
 }
 
 func (x *AppOverride) Reset() {
@@ -467,13 +422,13 @@ func (*AppOverride) Descriptor() ([]byte, []int) {
 }
 
 func (x *AppOverride) GetAppId() string {
-	if x != nil && x.AppId != nil {
-		return *x.AppId
+	if x != nil {
+		return x.AppId
 	}
 	return ""
 }
 
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in memcache_service.proto.
 func (x *AppOverride) GetNumMemcachegBackends() int32 {
 	if x != nil && x.NumMemcachegBackends != nil {
 		return *x.NumMemcachegBackends
@@ -481,7 +436,7 @@ func (x *AppOverride) GetNumMemcachegBackends() int32 {
 	return 0
 }
 
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in memcache_service.proto.
 func (x *AppOverride) GetIgnoreShardlock() bool {
 	if x != nil && x.IgnoreShardlock != nil {
 		return *x.IgnoreShardlock
@@ -489,7 +444,7 @@ func (x *AppOverride) GetIgnoreShardlock() bool {
 	return false
 }
 
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in memcache_service.proto.
 func (x *AppOverride) GetMemcachePoolHint() string {
 	if x != nil && x.MemcachePoolHint != nil {
 		return *x.MemcachePoolHint
@@ -497,7 +452,7 @@ func (x *AppOverride) GetMemcachePoolHint() string {
 	return ""
 }
 
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in memcache_service.proto.
 func (x *AppOverride) GetMemcacheShardingStrategy() []byte {
 	if x != nil {
 		return x.MemcacheShardingStrategy
@@ -510,19 +465,13 @@ type MemcacheGetRequest struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key       [][]byte     `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"`
-	NameSpace *string      `protobuf:"bytes,2,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"`
-	ForCas    *bool        `protobuf:"varint,4,opt,name=for_cas,json=forCas" json:"for_cas,omitempty"`
-	Override  *AppOverride `protobuf:"bytes,5,opt,name=override" json:"override,omitempty"`
-	ForPeek   *bool        `protobuf:"varint,6,opt,name=for_peek,json=forPeek,def=0" json:"for_peek,omitempty"`
+	Key       [][]byte     `protobuf:"bytes,1,rep,name=key,proto3" json:"key,omitempty"`
+	NameSpace *string      `protobuf:"bytes,2,opt,name=name_space,json=nameSpace,proto3,oneof" json:"name_space,omitempty"`
+	ForCas    *bool        `protobuf:"varint,4,opt,name=for_cas,json=forCas,proto3,oneof" json:"for_cas,omitempty"`
+	Override  *AppOverride `protobuf:"bytes,5,opt,name=override,proto3,oneof" json:"override,omitempty"`
+	ForPeek   *bool        `protobuf:"varint,6,opt,name=for_peek,json=forPeek,proto3,oneof" json:"for_peek,omitempty"`
 }
 
-// Default values for MemcacheGetRequest fields.
-const (
-	Default_MemcacheGetRequest_NameSpace = string("")
-	Default_MemcacheGetRequest_ForPeek   = bool(false)
-)
-
 func (x *MemcacheGetRequest) Reset() {
 	*x = MemcacheGetRequest{}
 	if protoimpl.UnsafeEnabled {
@@ -566,7 +515,7 @@ func (x *MemcacheGetRequest) GetNameSpace() string {
 	if x != nil && x.NameSpace != nil {
 		return *x.NameSpace
 	}
-	return Default_MemcacheGetRequest_NameSpace
+	return ""
 }
 
 func (x *MemcacheGetRequest) GetForCas() bool {
@@ -587,7 +536,7 @@ func (x *MemcacheGetRequest) GetForPeek() bool {
 	if x != nil && x.ForPeek != nil {
 		return *x.ForPeek
 	}
-	return Default_MemcacheGetRequest_ForPeek
+	return false
 }
 
 type ItemTimestamps struct {
@@ -595,9 +544,9 @@ type ItemTimestamps struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	ExpirationTimeSec *int64 `protobuf:"varint,1,opt,name=expiration_time_sec,json=expirationTimeSec" json:"expiration_time_sec,omitempty"`
-	LastAccessTimeSec *int64 `protobuf:"varint,2,opt,name=last_access_time_sec,json=lastAccessTimeSec" json:"last_access_time_sec,omitempty"`
-	DeleteLockTimeSec *int64 `protobuf:"varint,3,opt,name=delete_lock_time_sec,json=deleteLockTimeSec" json:"delete_lock_time_sec,omitempty"`
+	ExpirationTimeSec *int64 `protobuf:"varint,1,opt,name=expiration_time_sec,json=expirationTimeSec,proto3,oneof" json:"expiration_time_sec,omitempty"`
+	LastAccessTimeSec *int64 `protobuf:"varint,2,opt,name=last_access_time_sec,json=lastAccessTimeSec,proto3,oneof" json:"last_access_time_sec,omitempty"`
+	DeleteLockTimeSec *int64 `protobuf:"varint,3,opt,name=delete_lock_time_sec,json=deleteLockTimeSec,proto3,oneof" json:"delete_lock_time_sec,omitempty"`
 }
 
 func (x *ItemTimestamps) Reset() {
@@ -658,7 +607,7 @@ type MemcacheGetResponse struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Item []*MemcacheGetResponse_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"`
+	Item []*MemcacheGetResponse_ItemType `protobuf:"bytes,1,rep,name=Item,proto3" json:"Item,omitempty"`
 }
 
 func (x *MemcacheGetResponse) Reset() {
@@ -693,7 +642,7 @@ func (*MemcacheGetResponse) Descriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{4}
 }
 
-func (x *MemcacheGetResponse) GetItem() []*MemcacheGetResponse_Item {
+func (x *MemcacheGetResponse) GetItem() []*MemcacheGetResponse_ItemType {
 	if x != nil {
 		return x.Item
 	}
@@ -705,16 +654,11 @@ type MemcacheSetRequest struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Item      []*MemcacheSetRequest_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"`
-	NameSpace *string                    `protobuf:"bytes,7,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"`
-	Override  *AppOverride               `protobuf:"bytes,10,opt,name=override" json:"override,omitempty"`
+	Item      []*MemcacheSetRequest_ItemType `protobuf:"bytes,1,rep,name=Item,proto3" json:"Item,omitempty"`
+	NameSpace *string                        `protobuf:"bytes,7,opt,name=name_space,json=nameSpace,proto3,oneof" json:"name_space,omitempty"`
+	Override  *AppOverride                   `protobuf:"bytes,10,opt,name=override,proto3,oneof" json:"override,omitempty"`
 }
 
-// Default values for MemcacheSetRequest fields.
-const (
-	Default_MemcacheSetRequest_NameSpace = string("")
-)
-
 func (x *MemcacheSetRequest) Reset() {
 	*x = MemcacheSetRequest{}
 	if protoimpl.UnsafeEnabled {
@@ -747,7 +691,7 @@ func (*MemcacheSetRequest) Descriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{5}
 }
 
-func (x *MemcacheSetRequest) GetItem() []*MemcacheSetRequest_Item {
+func (x *MemcacheSetRequest) GetItem() []*MemcacheSetRequest_ItemType {
 	if x != nil {
 		return x.Item
 	}
@@ -758,7 +702,7 @@ func (x *MemcacheSetRequest) GetNameSpace() string {
 	if x != nil && x.NameSpace != nil {
 		return *x.NameSpace
 	}
-	return Default_MemcacheSetRequest_NameSpace
+	return ""
 }
 
 func (x *MemcacheSetRequest) GetOverride() *AppOverride {
@@ -773,7 +717,7 @@ type MemcacheSetResponse struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	SetStatus []MemcacheSetResponse_SetStatusCode `protobuf:"varint,1,rep,name=set_status,json=setStatus,enum=appengine.MemcacheSetResponse_SetStatusCode" json:"set_status,omitempty"`
+	SetStatus []MemcacheSetResponse_SetStatusCode `protobuf:"varint,1,rep,packed,name=set_status,json=setStatus,proto3,enum=appengine.MemcacheSetResponse_SetStatusCode" json:"set_status,omitempty"`
 }
 
 func (x *MemcacheSetResponse) Reset() {
@@ -820,16 +764,11 @@ type MemcacheDeleteRequest struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Item      []*MemcacheDeleteRequest_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"`
-	NameSpace *string                       `protobuf:"bytes,4,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"`
-	Override  *AppOverride                  `protobuf:"bytes,5,opt,name=override" json:"override,omitempty"`
+	Item      []*MemcacheDeleteRequest_ItemType `protobuf:"bytes,1,rep,name=Item,proto3" json:"Item,omitempty"`
+	NameSpace *string                           `protobuf:"bytes,4,opt,name=name_space,json=nameSpace,proto3,oneof" json:"name_space,omitempty"`
+	Override  *AppOverride                      `protobuf:"bytes,5,opt,name=override,proto3,oneof" json:"override,omitempty"`
 }
 
-// Default values for MemcacheDeleteRequest fields.
-const (
-	Default_MemcacheDeleteRequest_NameSpace = string("")
-)
-
 func (x *MemcacheDeleteRequest) Reset() {
 	*x = MemcacheDeleteRequest{}
 	if protoimpl.UnsafeEnabled {
@@ -862,7 +801,7 @@ func (*MemcacheDeleteRequest) Descriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{7}
 }
 
-func (x *MemcacheDeleteRequest) GetItem() []*MemcacheDeleteRequest_Item {
+func (x *MemcacheDeleteRequest) GetItem() []*MemcacheDeleteRequest_ItemType {
 	if x != nil {
 		return x.Item
 	}
@@ -873,7 +812,7 @@ func (x *MemcacheDeleteRequest) GetNameSpace() string {
 	if x != nil && x.NameSpace != nil {
 		return *x.NameSpace
 	}
-	return Default_MemcacheDeleteRequest_NameSpace
+	return ""
 }
 
 func (x *MemcacheDeleteRequest) GetOverride() *AppOverride {
@@ -888,7 +827,7 @@ type MemcacheDeleteResponse struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DeleteStatus []MemcacheDeleteResponse_DeleteStatusCode `protobuf:"varint,1,rep,name=delete_status,json=deleteStatus,enum=appengine.MemcacheDeleteResponse_DeleteStatusCode" json:"delete_status,omitempty"`
+	DeleteStatus []MemcacheDeleteResponse_DeleteStatusCode `protobuf:"varint,1,rep,packed,name=delete_status,json=deleteStatus,proto3,enum=appengine.MemcacheDeleteResponse_DeleteStatusCode" json:"delete_status,omitempty"`
 }
 
 func (x *MemcacheDeleteResponse) Reset() {
@@ -935,22 +874,15 @@ type MemcacheIncrementRequest struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key          []byte                              `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
-	NameSpace    *string                             `protobuf:"bytes,4,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"`
-	Delta        *uint64                             `protobuf:"varint,2,opt,name=delta,def=1" json:"delta,omitempty"`
-	Direction    *MemcacheIncrementRequest_Direction `protobuf:"varint,3,opt,name=direction,enum=appengine.MemcacheIncrementRequest_Direction,def=1" json:"direction,omitempty"`
-	InitialValue *uint64                             `protobuf:"varint,5,opt,name=initial_value,json=initialValue" json:"initial_value,omitempty"`
-	InitialFlags *uint32                             `protobuf:"fixed32,6,opt,name=initial_flags,json=initialFlags" json:"initial_flags,omitempty"`
-	Override     *AppOverride                        `protobuf:"bytes,7,opt,name=override" json:"override,omitempty"`
+	Key          []byte                              `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	NameSpace    *string                             `protobuf:"bytes,4,opt,name=name_space,json=nameSpace,proto3,oneof" json:"name_space,omitempty"`
+	Delta        *uint64                             `protobuf:"varint,2,opt,name=delta,proto3,oneof" json:"delta,omitempty"`
+	Direction    *MemcacheIncrementRequest_Direction `protobuf:"varint,3,opt,name=direction,proto3,enum=appengine.MemcacheIncrementRequest_Direction,oneof" json:"direction,omitempty"`
+	InitialValue *uint64                             `protobuf:"varint,5,opt,name=initial_value,json=initialValue,proto3,oneof" json:"initial_value,omitempty"`
+	InitialFlags *uint32                             `protobuf:"fixed32,6,opt,name=initial_flags,json=initialFlags,proto3,oneof" json:"initial_flags,omitempty"`
+	Override     *AppOverride                        `protobuf:"bytes,7,opt,name=override,proto3,oneof" json:"override,omitempty"`
 }
 
-// Default values for MemcacheIncrementRequest fields.
-const (
-	Default_MemcacheIncrementRequest_NameSpace = string("")
-	Default_MemcacheIncrementRequest_Delta     = uint64(1)
-	Default_MemcacheIncrementRequest_Direction = MemcacheIncrementRequest_INCREMENT
-)
-
 func (x *MemcacheIncrementRequest) Reset() {
 	*x = MemcacheIncrementRequest{}
 	if protoimpl.UnsafeEnabled {
@@ -994,21 +926,21 @@ func (x *MemcacheIncrementRequest) GetNameSpace() string {
 	if x != nil && x.NameSpace != nil {
 		return *x.NameSpace
 	}
-	return Default_MemcacheIncrementRequest_NameSpace
+	return ""
 }
 
 func (x *MemcacheIncrementRequest) GetDelta() uint64 {
 	if x != nil && x.Delta != nil {
 		return *x.Delta
 	}
-	return Default_MemcacheIncrementRequest_Delta
+	return 0
 }
 
 func (x *MemcacheIncrementRequest) GetDirection() MemcacheIncrementRequest_Direction {
 	if x != nil && x.Direction != nil {
 		return *x.Direction
 	}
-	return Default_MemcacheIncrementRequest_Direction
+	return MemcacheIncrementRequest_NONE
 }
 
 func (x *MemcacheIncrementRequest) GetInitialValue() uint64 {
@@ -1037,8 +969,8 @@ type MemcacheIncrementResponse struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	NewValue        *uint64                                        `protobuf:"varint,1,opt,name=new_value,json=newValue" json:"new_value,omitempty"`
-	IncrementStatus *MemcacheIncrementResponse_IncrementStatusCode `protobuf:"varint,2,opt,name=increment_status,json=incrementStatus,enum=appengine.MemcacheIncrementResponse_IncrementStatusCode" json:"increment_status,omitempty"`
+	NewValue        *uint64                                        `protobuf:"varint,1,opt,name=new_value,json=newValue,proto3,oneof" json:"new_value,omitempty"`
+	IncrementStatus *MemcacheIncrementResponse_IncrementStatusCode `protobuf:"varint,2,opt,name=increment_status,json=incrementStatus,proto3,enum=appengine.MemcacheIncrementResponse_IncrementStatusCode,oneof" json:"increment_status,omitempty"`
 }
 
 func (x *MemcacheIncrementResponse) Reset() {
@@ -1084,7 +1016,7 @@ func (x *MemcacheIncrementResponse) GetIncrementStatus() MemcacheIncrementRespon
 	if x != nil && x.IncrementStatus != nil {
 		return *x.IncrementStatus
 	}
-	return MemcacheIncrementResponse_OK
+	return MemcacheIncrementResponse_NONE
 }
 
 type MemcacheBatchIncrementRequest struct {
@@ -1092,16 +1024,11 @@ type MemcacheBatchIncrementRequest struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	NameSpace *string                     `protobuf:"bytes,1,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"`
-	Item      []*MemcacheIncrementRequest `protobuf:"bytes,2,rep,name=item" json:"item,omitempty"`
-	Override  *AppOverride                `protobuf:"bytes,3,opt,name=override" json:"override,omitempty"`
+	NameSpace *string                     `protobuf:"bytes,1,opt,name=name_space,json=nameSpace,proto3,oneof" json:"name_space,omitempty"`
+	Item      []*MemcacheIncrementRequest `protobuf:"bytes,2,rep,name=item,proto3" json:"item,omitempty"`
+	Override  *AppOverride                `protobuf:"bytes,3,opt,name=override,proto3,oneof" json:"override,omitempty"`
 }
 
-// Default values for MemcacheBatchIncrementRequest fields.
-const (
-	Default_MemcacheBatchIncrementRequest_NameSpace = string("")
-)
-
 func (x *MemcacheBatchIncrementRequest) Reset() {
 	*x = MemcacheBatchIncrementRequest{}
 	if protoimpl.UnsafeEnabled {
@@ -1138,7 +1065,7 @@ func (x *MemcacheBatchIncrementRequest) GetNameSpace() string {
 	if x != nil && x.NameSpace != nil {
 		return *x.NameSpace
 	}
-	return Default_MemcacheBatchIncrementRequest_NameSpace
+	return ""
 }
 
 func (x *MemcacheBatchIncrementRequest) GetItem() []*MemcacheIncrementRequest {
@@ -1160,7 +1087,7 @@ type MemcacheBatchIncrementResponse struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Item []*MemcacheIncrementResponse `protobuf:"bytes,1,rep,name=item" json:"item,omitempty"`
+	Item []*MemcacheIncrementResponse `protobuf:"bytes,1,rep,name=item,proto3" json:"item,omitempty"`
 }
 
 func (x *MemcacheBatchIncrementResponse) Reset() {
@@ -1207,7 +1134,7 @@ type MemcacheFlushRequest struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Override *AppOverride `protobuf:"bytes,1,opt,name=override" json:"override,omitempty"`
+	Override *AppOverride `protobuf:"bytes,1,opt,name=override,proto3,oneof" json:"override,omitempty"`
 }
 
 func (x *MemcacheFlushRequest) Reset() {
@@ -1292,7 +1219,7 @@ type MemcacheStatsRequest struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Override *AppOverride `protobuf:"bytes,1,opt,name=override" json:"override,omitempty"`
+	Override *AppOverride `protobuf:"bytes,1,opt,name=override,proto3,oneof" json:"override,omitempty"`
 }
 
 func (x *MemcacheStatsRequest) Reset() {
@@ -1339,12 +1266,12 @@ type MergedNamespaceStats struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Hits          *uint64 `protobuf:"varint,1,req,name=hits" json:"hits,omitempty"`
-	Misses        *uint64 `protobuf:"varint,2,req,name=misses" json:"misses,omitempty"`
-	ByteHits      *uint64 `protobuf:"varint,3,req,name=byte_hits,json=byteHits" json:"byte_hits,omitempty"`
-	Items         *uint64 `protobuf:"varint,4,req,name=items" json:"items,omitempty"`
-	Bytes         *uint64 `protobuf:"varint,5,req,name=bytes" json:"bytes,omitempty"`
-	OldestItemAge *uint32 `protobuf:"fixed32,6,req,name=oldest_item_age,json=oldestItemAge" json:"oldest_item_age,omitempty"`
+	Hits          uint64 `protobuf:"varint,1,opt,name=hits,proto3" json:"hits,omitempty"`
+	Misses        uint64 `protobuf:"varint,2,opt,name=misses,proto3" json:"misses,omitempty"`
+	ByteHits      uint64 `protobuf:"varint,3,opt,name=byte_hits,json=byteHits,proto3" json:"byte_hits,omitempty"`
+	Items         uint64 `protobuf:"varint,4,opt,name=items,proto3" json:"items,omitempty"`
+	Bytes         uint64 `protobuf:"varint,5,opt,name=bytes,proto3" json:"bytes,omitempty"`
+	OldestItemAge uint32 `protobuf:"fixed32,6,opt,name=oldest_item_age,json=oldestItemAge,proto3" json:"oldest_item_age,omitempty"`
 }
 
 func (x *MergedNamespaceStats) Reset() {
@@ -1380,43 +1307,43 @@ func (*MergedNamespaceStats) Descriptor() ([]byte, []int) {
 }
 
 func (x *MergedNamespaceStats) GetHits() uint64 {
-	if x != nil && x.Hits != nil {
-		return *x.Hits
+	if x != nil {
+		return x.Hits
 	}
 	return 0
 }
 
 func (x *MergedNamespaceStats) GetMisses() uint64 {
-	if x != nil && x.Misses != nil {
-		return *x.Misses
+	if x != nil {
+		return x.Misses
 	}
 	return 0
 }
 
 func (x *MergedNamespaceStats) GetByteHits() uint64 {
-	if x != nil && x.ByteHits != nil {
-		return *x.ByteHits
+	if x != nil {
+		return x.ByteHits
 	}
 	return 0
 }
 
 func (x *MergedNamespaceStats) GetItems() uint64 {
-	if x != nil && x.Items != nil {
-		return *x.Items
+	if x != nil {
+		return x.Items
 	}
 	return 0
 }
 
 func (x *MergedNamespaceStats) GetBytes() uint64 {
-	if x != nil && x.Bytes != nil {
-		return *x.Bytes
+	if x != nil {
+		return x.Bytes
 	}
 	return 0
 }
 
 func (x *MergedNamespaceStats) GetOldestItemAge() uint32 {
-	if x != nil && x.OldestItemAge != nil {
-		return *x.OldestItemAge
+	if x != nil {
+		return x.OldestItemAge
 	}
 	return 0
 }
@@ -1426,7 +1353,7 @@ type MemcacheStatsResponse struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Stats *MergedNamespaceStats `protobuf:"bytes,1,opt,name=stats" json:"stats,omitempty"`
+	Stats *MergedNamespaceStats `protobuf:"bytes,1,opt,name=stats,proto3,oneof" json:"stats,omitempty"`
 }
 
 func (x *MemcacheStatsResponse) Reset() {
@@ -1473,16 +1400,11 @@ type MemcacheGrabTailRequest struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	ItemCount *int32       `protobuf:"varint,1,req,name=item_count,json=itemCount" json:"item_count,omitempty"`
-	NameSpace *string      `protobuf:"bytes,2,opt,name=name_space,json=nameSpace,def=" json:"name_space,omitempty"`
-	Override  *AppOverride `protobuf:"bytes,3,opt,name=override" json:"override,omitempty"`
+	ItemCount int32        `protobuf:"varint,1,opt,name=item_count,json=itemCount,proto3" json:"item_count,omitempty"`
+	NameSpace *string      `protobuf:"bytes,2,opt,name=name_space,json=nameSpace,proto3,oneof" json:"name_space,omitempty"`
+	Override  *AppOverride `protobuf:"bytes,3,opt,name=override,proto3,oneof" json:"override,omitempty"`
 }
 
-// Default values for MemcacheGrabTailRequest fields.
-const (
-	Default_MemcacheGrabTailRequest_NameSpace = string("")
-)
-
 func (x *MemcacheGrabTailRequest) Reset() {
 	*x = MemcacheGrabTailRequest{}
 	if protoimpl.UnsafeEnabled {
@@ -1516,8 +1438,8 @@ func (*MemcacheGrabTailRequest) Descriptor() ([]byte, []int) {
 }
 
 func (x *MemcacheGrabTailRequest) GetItemCount() int32 {
-	if x != nil && x.ItemCount != nil {
-		return *x.ItemCount
+	if x != nil {
+		return x.ItemCount
 	}
 	return 0
 }
@@ -1526,7 +1448,7 @@ func (x *MemcacheGrabTailRequest) GetNameSpace() string {
 	if x != nil && x.NameSpace != nil {
 		return *x.NameSpace
 	}
-	return Default_MemcacheGrabTailRequest_NameSpace
+	return ""
 }
 
 func (x *MemcacheGrabTailRequest) GetOverride() *AppOverride {
@@ -1541,7 +1463,7 @@ type MemcacheGrabTailResponse struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Item []*MemcacheGrabTailResponse_Item `protobuf:"group,1,rep,name=Item,json=item" json:"item,omitempty"`
+	Item []*MemcacheGrabTailResponse_ItemType `protobuf:"bytes,1,rep,name=Item,proto3" json:"Item,omitempty"`
 }
 
 func (x *MemcacheGrabTailResponse) Reset() {
@@ -1576,29 +1498,29 @@ func (*MemcacheGrabTailResponse) Descriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{19}
 }
 
-func (x *MemcacheGrabTailResponse) GetItem() []*MemcacheGrabTailResponse_Item {
+func (x *MemcacheGrabTailResponse) GetItem() []*MemcacheGrabTailResponse_ItemType {
 	if x != nil {
 		return x.Item
 	}
 	return nil
 }
 
-type MemcacheGetResponse_Item struct {
+type MemcacheGetResponse_ItemType struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key              []byte          `protobuf:"bytes,2,req,name=key" json:"key,omitempty"`
-	Value            []byte          `protobuf:"bytes,3,req,name=value" json:"value,omitempty"`
-	Flags            *uint32         `protobuf:"fixed32,4,opt,name=flags" json:"flags,omitempty"`
-	CasId            *uint64         `protobuf:"fixed64,5,opt,name=cas_id,json=casId" json:"cas_id,omitempty"`
-	ExpiresInSeconds *int32          `protobuf:"varint,6,opt,name=expires_in_seconds,json=expiresInSeconds" json:"expires_in_seconds,omitempty"`
-	Timestamps       *ItemTimestamps `protobuf:"bytes,8,opt,name=timestamps" json:"timestamps,omitempty"`
-	IsDeleteLocked   *bool           `protobuf:"varint,9,opt,name=is_delete_locked,json=isDeleteLocked" json:"is_delete_locked,omitempty"`
+	Key              []byte          `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
+	Value            []byte          `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
+	Flags            *uint32         `protobuf:"fixed32,4,opt,name=flags,proto3,oneof" json:"flags,omitempty"`
+	CasId            *uint64         `protobuf:"fixed64,5,opt,name=cas_id,json=casId,proto3,oneof" json:"cas_id,omitempty"`
+	ExpiresInSeconds *int32          `protobuf:"varint,6,opt,name=expires_in_seconds,json=expiresInSeconds,proto3,oneof" json:"expires_in_seconds,omitempty"`
+	Timestamps       *ItemTimestamps `protobuf:"bytes,8,opt,name=timestamps,proto3,oneof" json:"timestamps,omitempty"`
+	IsDeleteLocked   *bool           `protobuf:"varint,9,opt,name=is_delete_locked,json=isDeleteLocked,proto3,oneof" json:"is_delete_locked,omitempty"`
 }
 
-func (x *MemcacheGetResponse_Item) Reset() {
-	*x = MemcacheGetResponse_Item{}
+func (x *MemcacheGetResponse_ItemType) Reset() {
+	*x = MemcacheGetResponse_ItemType{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_memcache_service_proto_msgTypes[20]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1606,13 +1528,13 @@ func (x *MemcacheGetResponse_Item) Reset() {
 	}
 }
 
-func (x *MemcacheGetResponse_Item) String() string {
+func (x *MemcacheGetResponse_ItemType) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MemcacheGetResponse_Item) ProtoMessage() {}
+func (*MemcacheGetResponse_ItemType) ProtoMessage() {}
 
-func (x *MemcacheGetResponse_Item) ProtoReflect() protoreflect.Message {
+func (x *MemcacheGetResponse_ItemType) ProtoReflect() protoreflect.Message {
 	mi := &file_memcache_service_proto_msgTypes[20]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1624,82 +1546,76 @@ func (x *MemcacheGetResponse_Item) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MemcacheGetResponse_Item.ProtoReflect.Descriptor instead.
-func (*MemcacheGetResponse_Item) Descriptor() ([]byte, []int) {
+// Deprecated: Use MemcacheGetResponse_ItemType.ProtoReflect.Descriptor instead.
+func (*MemcacheGetResponse_ItemType) Descriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{4, 0}
 }
 
-func (x *MemcacheGetResponse_Item) GetKey() []byte {
+func (x *MemcacheGetResponse_ItemType) GetKey() []byte {
 	if x != nil {
 		return x.Key
 	}
 	return nil
 }
 
-func (x *MemcacheGetResponse_Item) GetValue() []byte {
+func (x *MemcacheGetResponse_ItemType) GetValue() []byte {
 	if x != nil {
 		return x.Value
 	}
 	return nil
 }
 
-func (x *MemcacheGetResponse_Item) GetFlags() uint32 {
+func (x *MemcacheGetResponse_ItemType) GetFlags() uint32 {
 	if x != nil && x.Flags != nil {
 		return *x.Flags
 	}
 	return 0
 }
 
-func (x *MemcacheGetResponse_Item) GetCasId() uint64 {
+func (x *MemcacheGetResponse_ItemType) GetCasId() uint64 {
 	if x != nil && x.CasId != nil {
 		return *x.CasId
 	}
 	return 0
 }
 
-func (x *MemcacheGetResponse_Item) GetExpiresInSeconds() int32 {
+func (x *MemcacheGetResponse_ItemType) GetExpiresInSeconds() int32 {
 	if x != nil && x.ExpiresInSeconds != nil {
 		return *x.ExpiresInSeconds
 	}
 	return 0
 }
 
-func (x *MemcacheGetResponse_Item) GetTimestamps() *ItemTimestamps {
+func (x *MemcacheGetResponse_ItemType) GetTimestamps() *ItemTimestamps {
 	if x != nil {
 		return x.Timestamps
 	}
 	return nil
 }
 
-func (x *MemcacheGetResponse_Item) GetIsDeleteLocked() bool {
+func (x *MemcacheGetResponse_ItemType) GetIsDeleteLocked() bool {
 	if x != nil && x.IsDeleteLocked != nil {
 		return *x.IsDeleteLocked
 	}
 	return false
 }
 
-type MemcacheSetRequest_Item struct {
+type MemcacheSetRequest_ItemType struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key            []byte                        `protobuf:"bytes,2,req,name=key" json:"key,omitempty"`
-	Value          []byte                        `protobuf:"bytes,3,req,name=value" json:"value,omitempty"`
-	Flags          *uint32                       `protobuf:"fixed32,4,opt,name=flags" json:"flags,omitempty"`
-	SetPolicy      *MemcacheSetRequest_SetPolicy `protobuf:"varint,5,opt,name=set_policy,json=setPolicy,enum=appengine.MemcacheSetRequest_SetPolicy,def=1" json:"set_policy,omitempty"`
-	ExpirationTime *uint32                       `protobuf:"fixed32,6,opt,name=expiration_time,json=expirationTime,def=0" json:"expiration_time,omitempty"`
-	CasId          *uint64                       `protobuf:"fixed64,8,opt,name=cas_id,json=casId" json:"cas_id,omitempty"`
-	ForCas         *bool                         `protobuf:"varint,9,opt,name=for_cas,json=forCas" json:"for_cas,omitempty"`
+	Key            []byte                        `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
+	Value          []byte                        `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
+	Flags          *uint32                       `protobuf:"fixed32,4,opt,name=flags,proto3,oneof" json:"flags,omitempty"`
+	SetPolicy      *MemcacheSetRequest_SetPolicy `protobuf:"varint,5,opt,name=set_policy,json=setPolicy,proto3,enum=appengine.MemcacheSetRequest_SetPolicy,oneof" json:"set_policy,omitempty"`
+	ExpirationTime *uint32                       `protobuf:"fixed32,6,opt,name=expiration_time,json=expirationTime,proto3,oneof" json:"expiration_time,omitempty"`
+	CasId          *uint64                       `protobuf:"fixed64,8,opt,name=cas_id,json=casId,proto3,oneof" json:"cas_id,omitempty"`
+	ForCas         *bool                         `protobuf:"varint,9,opt,name=for_cas,json=forCas,proto3,oneof" json:"for_cas,omitempty"`
 }
 
-// Default values for MemcacheSetRequest_Item fields.
-const (
-	Default_MemcacheSetRequest_Item_SetPolicy      = MemcacheSetRequest_SET
-	Default_MemcacheSetRequest_Item_ExpirationTime = uint32(0)
-)
-
-func (x *MemcacheSetRequest_Item) Reset() {
-	*x = MemcacheSetRequest_Item{}
+func (x *MemcacheSetRequest_ItemType) Reset() {
+	*x = MemcacheSetRequest_ItemType{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_memcache_service_proto_msgTypes[21]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1707,13 +1623,13 @@ func (x *MemcacheSetRequest_Item) Reset() {
 	}
 }
 
-func (x *MemcacheSetRequest_Item) String() string {
+func (x *MemcacheSetRequest_ItemType) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MemcacheSetRequest_Item) ProtoMessage() {}
+func (*MemcacheSetRequest_ItemType) ProtoMessage() {}
 
-func (x *MemcacheSetRequest_Item) ProtoReflect() protoreflect.Message {
+func (x *MemcacheSetRequest_ItemType) ProtoReflect() protoreflect.Message {
 	mi := &file_memcache_service_proto_msgTypes[21]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1725,76 +1641,71 @@ func (x *MemcacheSetRequest_Item) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MemcacheSetRequest_Item.ProtoReflect.Descriptor instead.
-func (*MemcacheSetRequest_Item) Descriptor() ([]byte, []int) {
+// Deprecated: Use MemcacheSetRequest_ItemType.ProtoReflect.Descriptor instead.
+func (*MemcacheSetRequest_ItemType) Descriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{5, 0}
 }
 
-func (x *MemcacheSetRequest_Item) GetKey() []byte {
+func (x *MemcacheSetRequest_ItemType) GetKey() []byte {
 	if x != nil {
 		return x.Key
 	}
 	return nil
 }
 
-func (x *MemcacheSetRequest_Item) GetValue() []byte {
+func (x *MemcacheSetRequest_ItemType) GetValue() []byte {
 	if x != nil {
 		return x.Value
 	}
 	return nil
 }
 
-func (x *MemcacheSetRequest_Item) GetFlags() uint32 {
+func (x *MemcacheSetRequest_ItemType) GetFlags() uint32 {
 	if x != nil && x.Flags != nil {
 		return *x.Flags
 	}
 	return 0
 }
 
-func (x *MemcacheSetRequest_Item) GetSetPolicy() MemcacheSetRequest_SetPolicy {
+func (x *MemcacheSetRequest_ItemType) GetSetPolicy() MemcacheSetRequest_SetPolicy {
 	if x != nil && x.SetPolicy != nil {
 		return *x.SetPolicy
 	}
-	return Default_MemcacheSetRequest_Item_SetPolicy
+	return MemcacheSetRequest_NONE
 }
 
-func (x *MemcacheSetRequest_Item) GetExpirationTime() uint32 {
+func (x *MemcacheSetRequest_ItemType) GetExpirationTime() uint32 {
 	if x != nil && x.ExpirationTime != nil {
 		return *x.ExpirationTime
 	}
-	return Default_MemcacheSetRequest_Item_ExpirationTime
+	return 0
 }
 
-func (x *MemcacheSetRequest_Item) GetCasId() uint64 {
+func (x *MemcacheSetRequest_ItemType) GetCasId() uint64 {
 	if x != nil && x.CasId != nil {
 		return *x.CasId
 	}
 	return 0
 }
 
-func (x *MemcacheSetRequest_Item) GetForCas() bool {
+func (x *MemcacheSetRequest_ItemType) GetForCas() bool {
 	if x != nil && x.ForCas != nil {
 		return *x.ForCas
 	}
 	return false
 }
 
-type MemcacheDeleteRequest_Item struct {
+type MemcacheDeleteRequest_ItemType struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key        []byte  `protobuf:"bytes,2,req,name=key" json:"key,omitempty"`
-	DeleteTime *uint32 `protobuf:"fixed32,3,opt,name=delete_time,json=deleteTime,def=0" json:"delete_time,omitempty"`
+	Key        []byte  `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
+	DeleteTime *uint32 `protobuf:"fixed32,3,opt,name=delete_time,json=deleteTime,proto3,oneof" json:"delete_time,omitempty"`
 }
 
-// Default values for MemcacheDeleteRequest_Item fields.
-const (
-	Default_MemcacheDeleteRequest_Item_DeleteTime = uint32(0)
-)
-
-func (x *MemcacheDeleteRequest_Item) Reset() {
-	*x = MemcacheDeleteRequest_Item{}
+func (x *MemcacheDeleteRequest_ItemType) Reset() {
+	*x = MemcacheDeleteRequest_ItemType{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_memcache_service_proto_msgTypes[22]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1802,13 +1713,13 @@ func (x *MemcacheDeleteRequest_Item) Reset() {
 	}
 }
 
-func (x *MemcacheDeleteRequest_Item) String() string {
+func (x *MemcacheDeleteRequest_ItemType) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MemcacheDeleteRequest_Item) ProtoMessage() {}
+func (*MemcacheDeleteRequest_ItemType) ProtoMessage() {}
 
-func (x *MemcacheDeleteRequest_Item) ProtoReflect() protoreflect.Message {
+func (x *MemcacheDeleteRequest_ItemType) ProtoReflect() protoreflect.Message {
 	mi := &file_memcache_service_proto_msgTypes[22]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1820,36 +1731,36 @@ func (x *MemcacheDeleteRequest_Item) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MemcacheDeleteRequest_Item.ProtoReflect.Descriptor instead.
-func (*MemcacheDeleteRequest_Item) Descriptor() ([]byte, []int) {
+// Deprecated: Use MemcacheDeleteRequest_ItemType.ProtoReflect.Descriptor instead.
+func (*MemcacheDeleteRequest_ItemType) Descriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{7, 0}
 }
 
-func (x *MemcacheDeleteRequest_Item) GetKey() []byte {
+func (x *MemcacheDeleteRequest_ItemType) GetKey() []byte {
 	if x != nil {
 		return x.Key
 	}
 	return nil
 }
 
-func (x *MemcacheDeleteRequest_Item) GetDeleteTime() uint32 {
+func (x *MemcacheDeleteRequest_ItemType) GetDeleteTime() uint32 {
 	if x != nil && x.DeleteTime != nil {
 		return *x.DeleteTime
 	}
-	return Default_MemcacheDeleteRequest_Item_DeleteTime
+	return 0
 }
 
-type MemcacheGrabTailResponse_Item struct {
+type MemcacheGrabTailResponse_ItemType struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Value []byte  `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
-	Flags *uint32 `protobuf:"fixed32,3,opt,name=flags" json:"flags,omitempty"`
+	Value []byte  `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	Flags *uint32 `protobuf:"fixed32,3,opt,name=flags,proto3,oneof" json:"flags,omitempty"`
 }
 
-func (x *MemcacheGrabTailResponse_Item) Reset() {
-	*x = MemcacheGrabTailResponse_Item{}
+func (x *MemcacheGrabTailResponse_ItemType) Reset() {
+	*x = MemcacheGrabTailResponse_ItemType{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_memcache_service_proto_msgTypes[23]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1857,13 +1768,13 @@ func (x *MemcacheGrabTailResponse_Item) Reset() {
 	}
 }
 
-func (x *MemcacheGrabTailResponse_Item) String() string {
+func (x *MemcacheGrabTailResponse_ItemType) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MemcacheGrabTailResponse_Item) ProtoMessage() {}
+func (*MemcacheGrabTailResponse_ItemType) ProtoMessage() {}
 
-func (x *MemcacheGrabTailResponse_Item) ProtoReflect() protoreflect.Message {
+func (x *MemcacheGrabTailResponse_ItemType) ProtoReflect() protoreflect.Message {
 	mi := &file_memcache_service_proto_msgTypes[23]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1875,19 +1786,19 @@ func (x *MemcacheGrabTailResponse_Item) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MemcacheGrabTailResponse_Item.ProtoReflect.Descriptor instead.
-func (*MemcacheGrabTailResponse_Item) Descriptor() ([]byte, []int) {
+// Deprecated: Use MemcacheGrabTailResponse_ItemType.ProtoReflect.Descriptor instead.
+func (*MemcacheGrabTailResponse_ItemType) Descriptor() ([]byte, []int) {
 	return file_memcache_service_proto_rawDescGZIP(), []int{19, 0}
 }
 
-func (x *MemcacheGrabTailResponse_Item) GetValue() []byte {
+func (x *MemcacheGrabTailResponse_ItemType) GetValue() []byte {
 	if x != nil {
 		return x.Value
 	}
 	return nil
 }
 
-func (x *MemcacheGrabTailResponse_Item) GetFlags() uint32 {
+func (x *MemcacheGrabTailResponse_ItemType) GetFlags() uint32 {
 	if x != nil && x.Flags != nil {
 		return *x.Flags
 	}
@@ -1907,231 +1818,289 @@ var file_memcache_service_proto_rawDesc = []byte{
 	0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x02, 0x12,
 	0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45,
 	0x4e, 0x49, 0x45, 0x44, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
-	0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x06, 0x22, 0x81, 0x02, 0x0a, 0x0b, 0x41, 0x70,
+	0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x06, 0x22, 0xfb, 0x02, 0x0a, 0x0b, 0x41, 0x70,
 	0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70,
-	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64,
-	0x12, 0x38, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65,
+	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64,
+	0x12, 0x3d, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65,
 	0x67, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
-	0x42, 0x02, 0x18, 0x01, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68,
-	0x65, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x69, 0x67,
-	0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65,
-	0x53, 0x68, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x30, 0x0a, 0x12, 0x6d, 0x65, 0x6d,
-	0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x63, 0x61,
-	0x63, 0x68, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x1a, 0x6d,
-	0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67,
-	0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42,
-	0x02, 0x18, 0x01, 0x52, 0x18, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x68, 0x61,
-	0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0xb6, 0x01,
-	0x0a, 0x12, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73,
-	0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61,
-	0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x5f, 0x63,
-	0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x43, 0x61, 0x73,
-	0x12, 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41,
-	0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72,
-	0x72, 0x69, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x08, 0x66, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x65, 0x6b,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x07, 0x66,
-	0x6f, 0x72, 0x50, 0x65, 0x65, 0x6b, 0x22, 0xa2, 0x01, 0x0a, 0x0e, 0x49, 0x74, 0x65, 0x6d, 0x54,
-	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x78, 0x70,
-	0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x12, 0x2f, 0x0a, 0x14, 0x6c, 0x61, 0x73,
-	0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65,
-	0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x63,
-	0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x12, 0x2f, 0x0a, 0x14, 0x64, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73,
-	0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
-	0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x22, 0xbf, 0x02, 0x0a, 0x13,
-	0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x0a, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65,
-	0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0xee, 0x01, 0x0a,
-	0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x02,
-	0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a,
-	0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x66, 0x6c,
-	0x61, 0x67, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x06, 0x52, 0x05, 0x63, 0x61, 0x73, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x78,
-	0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49,
-	0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
-	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
-	0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69,
-	0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x22, 0xc6, 0x03,
-	0x0a, 0x12, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0a, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d,
-	0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0a,
-	0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
-	0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x32, 0x0a,
-	0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f,
-	0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
-	0x65, 0x1a, 0xed, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x07, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x0a, 0x73, 0x65, 0x74, 0x5f,
-	0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x61,
-	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68,
-	0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x50,
-	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x03, 0x53, 0x45, 0x54, 0x52, 0x09, 0x73, 0x65, 0x74, 0x50,
-	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2a, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x01,
-	0x30, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d,
-	0x65, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x06, 0x52, 0x05, 0x63, 0x61, 0x73, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x5f,
-	0x63, 0x61, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x43, 0x61,
-	0x73, 0x22, 0x33, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x07,
-	0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x02,
-	0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x03, 0x12, 0x07, 0x0a,
-	0x03, 0x43, 0x41, 0x53, 0x10, 0x04, 0x22, 0xa6, 0x01, 0x0a, 0x13, 0x4d, 0x65, 0x6d, 0x63, 0x61,
-	0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b,
-	0x0a, 0x0a, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d,
-	0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65,
-	0x52, 0x09, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x42, 0x0a, 0x0d, 0x53,
-	0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0a, 0x0a, 0x06,
-	0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x54, 0x5f,
-	0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f,
-	0x52, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x04, 0x22,
-	0xe5, 0x01, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x69, 0x74, 0x65,
-	0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
-	0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04,
-	0x69, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61,
-	0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
-	0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
+	0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x4d, 0x65, 0x6d, 0x63, 0x61,
+	0x63, 0x68, 0x65, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12,
+	0x32, 0x0a, 0x10, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x6c,
+	0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x48, 0x01, 0x52,
+	0x0f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x53, 0x68, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x63, 0x6b,
+	0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x12, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f,
+	0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42,
+	0x02, 0x18, 0x01, 0x48, 0x02, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x50,
+	0x6f, 0x6f, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x1a, 0x6d, 0x65,
+	0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f,
+	0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02,
+	0x18, 0x01, 0x48, 0x03, 0x52, 0x18, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x68,
+	0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x88, 0x01,
+	0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63,
+	0x68, 0x65, 0x67, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x42, 0x13, 0x0a, 0x11,
+	0x5f, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x63,
+	0x6b, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70,
+	0x6f, 0x6f, 0x6c, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x65, 0x6d,
+	0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73,
+	0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0xf6, 0x01, 0x0a, 0x12, 0x4d, 0x65, 0x6d, 0x63,
+	0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10,
+	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79,
+	0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63,
+	0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x73, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x43, 0x61, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x05,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x48, 0x02, 0x52, 0x08,
+	0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x66,
+	0x6f, 0x72, 0x5f, 0x70, 0x65, 0x65, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52,
+	0x07, 0x66, 0x6f, 0x72, 0x50, 0x65, 0x65, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
+	0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66,
+	0x6f, 0x72, 0x5f, 0x63, 0x61, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72,
+	0x69, 0x64, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x65, 0x6b,
+	0x22, 0xfb, 0x01, 0x0a, 0x0e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x73, 0x12, 0x33, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+	0x48, 0x00, 0x52, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69,
+	0x6d, 0x65, 0x53, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74,
+	0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63,
+	0x63, 0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x34,
+	0x0a, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69,
+	0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x11,
+	0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65,
+	0x63, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x42, 0x17, 0x0a, 0x15,
+	0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d,
+	0x65, 0x5f, 0x73, 0x65, 0x63, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
+	0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x22, 0xb0,
+	0x03, 0x0a, 0x13, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x49,
+	0x74, 0x65, 0x6d, 0x1a, 0xdb, 0x02, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65,
+	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b,
+	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67,
+	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73,
+	0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x06, 0x48, 0x01, 0x52, 0x05, 0x63, 0x61, 0x73, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12,
+	0x31, 0x0a, 0x12, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65,
+	0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x10, 0x65,
+	0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73,
+	0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x73, 0x48, 0x03, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f,
+	0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0e,
+	0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x88, 0x01,
+	0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f,
+	0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72,
+	0x65, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0d, 0x0a,
+	0x0b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x42, 0x13, 0x0a, 0x11,
+	0x5f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x65,
+	0x64, 0x22, 0xd1, 0x04, 0x0a, 0x12, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
+	0x49, 0x74, 0x65, 0x6d, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61,
+	0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+	0x53, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72,
+	0x72, 0x69, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69,
+	0x64, 0x65, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01,
+	0x01, 0x1a, 0xc6, 0x02, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10,
+	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79,
+	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x88, 0x01,
+	0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x01,
+	0x52, 0x09, 0x73, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2c,
+	0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d,
+	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x07, 0x48, 0x02, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06,
+	0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x48, 0x03, 0x52, 0x05,
+	0x63, 0x61, 0x73, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x5f,
+	0x63, 0x61, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x06, 0x66, 0x6f, 0x72,
+	0x43, 0x61, 0x73, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73,
+	0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42,
+	0x12, 0x0a, 0x10, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
+	0x69, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x42, 0x0a,
+	0x0a, 0x08, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x73, 0x22, 0x3d, 0x0a, 0x09, 0x53, 0x65,
+	0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10,
+	0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44,
+	0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x03,
+	0x12, 0x07, 0x0a, 0x03, 0x43, 0x41, 0x53, 0x10, 0x04, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x76, 0x65,
+	0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x13, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63,
+	0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a,
+	0x0a, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0e, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65,
+	0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52,
+	0x09, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4c, 0x0a, 0x0d, 0x53, 0x65,
+	0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e,
+	0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10,
+	0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x44, 0x10,
+	0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06,
+	0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x04, 0x22, 0xa3, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x6d,
+	0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x29, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d,
+	0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x49, 0x74, 0x65,
+	0x6d, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61,
+	0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
 	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
-	0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52,
-	0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x1a, 0x3c, 0x0a, 0x04, 0x49, 0x74, 0x65,
-	0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69,
-	0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x01, 0x30, 0x52, 0x0a, 0x64, 0x65, 0x6c,
-	0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x16, 0x4d, 0x65, 0x6d, 0x63,
-	0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x57, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61,
-	0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x70, 0x65,
-	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x6c,
-	0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x64,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2e, 0x0a, 0x10, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12,
-	0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09,
-	0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x22, 0xe7, 0x02, 0x0a, 0x18,
-	0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61,
-	0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00,
-	0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x05, 0x64,
-	0x65, 0x6c, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x01, 0x31, 0x52, 0x05, 0x64,
-	0x65, 0x6c, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
-	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
-	0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72,
-	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x69, 0x72,
-	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x09, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e,
-	0x54, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d,
+	0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x48,
+	0x01, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x52,
+	0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0b,
+	0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x07, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88,
+	0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69,
+	0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63,
+	0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xab,
+	0x01, 0x0a, 0x16, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74,
+	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0d, 0x64, 0x65, 0x6c,
+	0x65, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e,
+	0x32, 0x32, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d,
+	0x63, 0x61, 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x22, 0x38, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00,
+	0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a,
+	0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x22, 0xd7, 0x03, 0x0a,
+	0x18, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65,
+	0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x6e,
+	0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12,
+	0x19, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01,
+	0x52, 0x05, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x09, 0x64, 0x69,
+	0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e,
+	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63,
+	0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x09,
+	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d,
 	0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x61,
-	0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61,
-	0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69,
-	0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
-	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
-	0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x29, 0x0a, 0x09, 0x44, 0x69,
-	0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x43, 0x52, 0x45,
-	0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d,
-	0x45, 0x4e, 0x54, 0x10, 0x02, 0x22, 0xd8, 0x01, 0x0a, 0x19, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63,
-	0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x12, 0x63, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74,
-	0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x61, 0x70, 0x70,
-	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49,
-	0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x2e, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x43, 0x6f, 0x64, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x39, 0x0a, 0x13, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65,
-	0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02,
-	0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x48, 0x41, 0x4e,
-	0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03,
-	0x22, 0xad, 0x01, 0x0a, 0x1d, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x61, 0x74,
-	0x63, 0x68, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70,
-	0x61, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65,
-	0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x32, 0x0a, 0x08,
-	0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
-	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76,
-	0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
-	0x22, 0x5a, 0x0a, 0x1e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x61, 0x74, 0x63,
-	0x68, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x24, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d,
+	0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61,
+	0x6c, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x07, 0x48, 0x04, 0x52,
+	0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x88, 0x01, 0x01,
+	0x12, 0x37, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41,
+	0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x48, 0x05, 0x52, 0x08, 0x6f, 0x76,
+	0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01, 0x22, 0x33, 0x0a, 0x09, 0x44, 0x69, 0x72,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00,
+	0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12,
+	0x0d, 0x0a, 0x09, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x42, 0x0d,
+	0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x08, 0x0a,
+	0x06, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61,
+	0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x6e, 0x69, 0x74,
+	0x69, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x76,
+	0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x8f, 0x02, 0x0a, 0x19, 0x4d, 0x65, 0x6d, 0x63, 0x61,
+	0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d,
+	0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x38, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d,
 	0x63, 0x61, 0x63, 0x68, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x4a, 0x0a, 0x14,
-	0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08,
-	0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63,
-	0x61, 0x63, 0x68, 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x22, 0x4a, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61,
-	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65,
-	0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70,
-	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72,
-	0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xb3, 0x01,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x48, 0x01, 0x52, 0x0f, 0x69, 0x6e,
+	0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01,
+	0x22, 0x43, 0x0a, 0x13, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61,
+	0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10,
+	0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54,
+	0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52,
+	0x52, 0x4f, 0x52, 0x10, 0x03, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xd1, 0x01, 0x0a, 0x1d, 0x4d, 0x65, 0x6d,
+	0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d,
+	0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x61,
+	0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+	0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37,
+	0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68,
+	0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72,
+	0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
+	0x65, 0x48, 0x01, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01,
+	0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42,
+	0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x5a, 0x0a, 0x1e,
+	0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x63,
+	0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38,
+	0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68,
+	0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x5c, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x63,
+	0x61, 0x63, 0x68, 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x37, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41,
+	0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x76,
+	0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x76,
+	0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63,
+	0x68, 0x65, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+	0x5c, 0x0a, 0x14, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72,
+	0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
+	0x65, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01,
+	0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xb3, 0x01,
 	0x0a, 0x14, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
 	0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x04, 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69,
-	0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x02, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x69, 0x73, 0x73,
+	0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x68, 0x69, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69,
+	0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6d, 0x69, 0x73, 0x73,
 	0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x68, 0x69, 0x74, 0x73, 0x18,
-	0x03, 0x20, 0x02, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x48, 0x69, 0x74, 0x73, 0x12,
-	0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x02, 0x28, 0x04, 0x52, 0x05,
+	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x48, 0x69, 0x74, 0x73, 0x12,
+	0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
 	0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05,
-	0x20, 0x02, 0x28, 0x04, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6f,
+	0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6f,
 	0x6c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x06,
-	0x20, 0x02, 0x28, 0x07, 0x52, 0x0d, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d,
-	0x41, 0x67, 0x65, 0x22, 0x4e, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53,
-	0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05,
+	0x20, 0x01, 0x28, 0x07, 0x52, 0x0d, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d,
+	0x41, 0x67, 0x65, 0x22, 0x5d, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53,
+	0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x05,
 	0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70,
 	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x4e, 0x61,
-	0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74,
-	0x61, 0x74, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x17, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65,
-	0x47, 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
-	0x1d, 0x0a, 0x0a, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f,
-	0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x3a, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12,
-	0x32, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x70,
-	0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72,
-	0x69, 0x64, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65,
-	0x47, 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x3c, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x28,
-	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x63, 0x61,
+	0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, 0x05,
+	0x73, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61,
+	0x74, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x17, 0x4d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47,
+	0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d,
+	0x0a, 0x0a, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a,
+	0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01,
+	0x01, 0x12, 0x37, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x41, 0x70, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x48, 0x01, 0x52, 0x08, 0x6f,
+	0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e,
+	0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x76,
+	0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x18, 0x4d, 0x65, 0x6d, 0x63, 0x61,
 	0x63, 0x68, 0x65, 0x47, 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x1a, 0x32,
-	0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05,
-	0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x66, 0x6c, 0x61,
-	0x67, 0x73, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
-	0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x65, 0x6d, 0x63, 0x61,
-	0x63, 0x68, 0x65,
+	0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x4d, 0x65,
+	0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x47, 0x72, 0x61, 0x62, 0x54, 0x61, 0x69, 0x6c, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52,
+	0x04, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x45, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x88,
+	0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x2f, 0x5a, 0x2d,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
+	0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65,
+	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x65, 0x6d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x62, 0x06, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -2175,18 +2144,18 @@ var file_memcache_service_proto_goTypes = []interface{}{
 	(*MemcacheStatsResponse)(nil),                      // 23: appengine.MemcacheStatsResponse
 	(*MemcacheGrabTailRequest)(nil),                    // 24: appengine.MemcacheGrabTailRequest
 	(*MemcacheGrabTailResponse)(nil),                   // 25: appengine.MemcacheGrabTailResponse
-	(*MemcacheGetResponse_Item)(nil),                   // 26: appengine.MemcacheGetResponse.Item
-	(*MemcacheSetRequest_Item)(nil),                    // 27: appengine.MemcacheSetRequest.Item
-	(*MemcacheDeleteRequest_Item)(nil),                 // 28: appengine.MemcacheDeleteRequest.Item
-	(*MemcacheGrabTailResponse_Item)(nil),              // 29: appengine.MemcacheGrabTailResponse.Item
+	(*MemcacheGetResponse_ItemType)(nil),               // 26: appengine.MemcacheGetResponse.ItemType
+	(*MemcacheSetRequest_ItemType)(nil),                // 27: appengine.MemcacheSetRequest.ItemType
+	(*MemcacheDeleteRequest_ItemType)(nil),             // 28: appengine.MemcacheDeleteRequest.ItemType
+	(*MemcacheGrabTailResponse_ItemType)(nil),          // 29: appengine.MemcacheGrabTailResponse.ItemType
 }
 var file_memcache_service_proto_depIdxs = []int32{
 	7,  // 0: appengine.MemcacheGetRequest.override:type_name -> appengine.AppOverride
-	26, // 1: appengine.MemcacheGetResponse.item:type_name -> appengine.MemcacheGetResponse.Item
-	27, // 2: appengine.MemcacheSetRequest.item:type_name -> appengine.MemcacheSetRequest.Item
+	26, // 1: appengine.MemcacheGetResponse.Item:type_name -> appengine.MemcacheGetResponse.ItemType
+	27, // 2: appengine.MemcacheSetRequest.Item:type_name -> appengine.MemcacheSetRequest.ItemType
 	7,  // 3: appengine.MemcacheSetRequest.override:type_name -> appengine.AppOverride
 	2,  // 4: appengine.MemcacheSetResponse.set_status:type_name -> appengine.MemcacheSetResponse.SetStatusCode
-	28, // 5: appengine.MemcacheDeleteRequest.item:type_name -> appengine.MemcacheDeleteRequest.Item
+	28, // 5: appengine.MemcacheDeleteRequest.Item:type_name -> appengine.MemcacheDeleteRequest.ItemType
 	7,  // 6: appengine.MemcacheDeleteRequest.override:type_name -> appengine.AppOverride
 	3,  // 7: appengine.MemcacheDeleteResponse.delete_status:type_name -> appengine.MemcacheDeleteResponse.DeleteStatusCode
 	4,  // 8: appengine.MemcacheIncrementRequest.direction:type_name -> appengine.MemcacheIncrementRequest.Direction
@@ -2199,9 +2168,9 @@ var file_memcache_service_proto_depIdxs = []int32{
 	7,  // 15: appengine.MemcacheStatsRequest.override:type_name -> appengine.AppOverride
 	22, // 16: appengine.MemcacheStatsResponse.stats:type_name -> appengine.MergedNamespaceStats
 	7,  // 17: appengine.MemcacheGrabTailRequest.override:type_name -> appengine.AppOverride
-	29, // 18: appengine.MemcacheGrabTailResponse.item:type_name -> appengine.MemcacheGrabTailResponse.Item
-	9,  // 19: appengine.MemcacheGetResponse.Item.timestamps:type_name -> appengine.ItemTimestamps
-	1,  // 20: appengine.MemcacheSetRequest.Item.set_policy:type_name -> appengine.MemcacheSetRequest.SetPolicy
+	29, // 18: appengine.MemcacheGrabTailResponse.Item:type_name -> appengine.MemcacheGrabTailResponse.ItemType
+	9,  // 19: appengine.MemcacheGetResponse.ItemType.timestamps:type_name -> appengine.ItemTimestamps
+	1,  // 20: appengine.MemcacheSetRequest.ItemType.set_policy:type_name -> appengine.MemcacheSetRequest.SetPolicy
 	21, // [21:21] is the sub-list for method output_type
 	21, // [21:21] is the sub-list for method input_type
 	21, // [21:21] is the sub-list for extension type_name
@@ -2456,7 +2425,7 @@ func file_memcache_service_proto_init() {
 			}
 		}
 		file_memcache_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MemcacheGetResponse_Item); i {
+			switch v := v.(*MemcacheGetResponse_ItemType); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2468,7 +2437,7 @@ func file_memcache_service_proto_init() {
 			}
 		}
 		file_memcache_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MemcacheSetRequest_Item); i {
+			switch v := v.(*MemcacheSetRequest_ItemType); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2480,7 +2449,7 @@ func file_memcache_service_proto_init() {
 			}
 		}
 		file_memcache_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MemcacheDeleteRequest_Item); i {
+			switch v := v.(*MemcacheDeleteRequest_ItemType); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2492,7 +2461,7 @@ func file_memcache_service_proto_init() {
 			}
 		}
 		file_memcache_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MemcacheGrabTailResponse_Item); i {
+			switch v := v.(*MemcacheGrabTailResponse_ItemType); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2504,6 +2473,22 @@ func file_memcache_service_proto_init() {
 			}
 		}
 	}
+	file_memcache_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[5].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[7].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[9].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[10].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[11].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[13].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[15].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[17].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[18].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[20].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[21].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[22].OneofWrappers = []interface{}{}
+	file_memcache_service_proto_msgTypes[23].OneofWrappers = []interface{}{}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
diff --git a/internal/memcache/memcache_service.proto b/internal/memcache/memcache_service.proto
index 3802ef93..89669217 100644
--- a/internal/memcache/memcache_service.proto
+++ b/internal/memcache/memcache_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "memcache";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/memcache";
 
 package appengine;
 
@@ -14,7 +14,7 @@ message MemcacheServiceError {
 }
 
 message AppOverride {
-  required string app_id = 1;
+  string app_id = 1;
 
   optional int32 num_memcacheg_backends = 2 [deprecated=true];
   optional bool ignore_shardlock = 3 [deprecated=true];
@@ -24,10 +24,10 @@ message AppOverride {
 
 message MemcacheGetRequest {
   repeated bytes key = 1;
-  optional string name_space = 2 [default = ""];
+  optional string name_space = 2 ;
   optional bool for_cas = 4;
   optional AppOverride override = 5;
-  optional bool for_peek = 6 [default = false];
+  optional bool for_peek = 6 ;
 }
 
 message ItemTimestamps {
@@ -37,9 +37,10 @@ message ItemTimestamps {
 }
 
 message MemcacheGetResponse {
-  repeated group Item = 1 {
-    required bytes key = 2;
-    required bytes value = 3;
+  repeated ItemType Item = 1;
+  message ItemType {
+    bytes key = 2;
+    bytes value = 3;
     optional fixed32 flags = 4;
     optional fixed64 cas_id = 5;
     optional int32 expires_in_seconds = 6;
@@ -50,28 +51,31 @@ message MemcacheGetResponse {
 
 message MemcacheSetRequest {
   enum SetPolicy {
+    NONE = 0;
     SET = 1;
     ADD = 2;
     REPLACE = 3;
     CAS = 4;
   }
-  repeated group Item = 1 {
-    required bytes key = 2;
-    required bytes value = 3;
+  repeated ItemType Item = 1;
+  message ItemType {
+    bytes key = 2;
+    bytes value = 3;
 
     optional fixed32 flags = 4;
-    optional SetPolicy set_policy = 5 [default = SET];
-    optional fixed32 expiration_time = 6 [default = 0];
+    optional SetPolicy set_policy = 5;
+    optional fixed32 expiration_time = 6;
 
     optional fixed64 cas_id = 8;
     optional bool for_cas = 9;
   }
-  optional string name_space = 7 [default = ""];
+  optional string name_space = 7 ;
   optional AppOverride override = 10;
 }
 
 message MemcacheSetResponse {
   enum SetStatusCode {
+    NONE = 0;
     STORED = 1;
     NOT_STORED = 2;
     ERROR = 3;
@@ -81,16 +85,18 @@ message MemcacheSetResponse {
 }
 
 message MemcacheDeleteRequest {
-  repeated group Item = 1 {
-    required bytes key = 2;
-    optional fixed32 delete_time = 3 [default = 0];
+  repeated ItemType Item = 1;
+  message ItemType {
+    bytes key = 2;
+    optional fixed32 delete_time = 3;
   }
-  optional string name_space = 4 [default = ""];
+  optional string name_space = 4 ;
   optional AppOverride override = 5;
 }
 
 message MemcacheDeleteResponse {
   enum DeleteStatusCode {
+    NONE = 0;
     DELETED = 1;
     NOT_FOUND = 2;
   }
@@ -99,14 +105,15 @@ message MemcacheDeleteResponse {
 
 message MemcacheIncrementRequest {
   enum Direction {
+    NONE = 0;
     INCREMENT = 1;
     DECREMENT = 2;
   }
-  required bytes key = 1;
-  optional string name_space = 4 [default = ""];
+  bytes key = 1;
+  optional string name_space = 4 ;
 
-  optional uint64 delta = 2 [default = 1];
-  optional Direction direction = 3 [default = INCREMENT];
+  optional uint64 delta = 2;
+  optional Direction direction = 3;
 
   optional uint64 initial_value = 5;
   optional fixed32 initial_flags = 6;
@@ -115,6 +122,7 @@ message MemcacheIncrementRequest {
 
 message MemcacheIncrementResponse {
   enum IncrementStatusCode {
+    NONE = 0;
     OK = 1;
     NOT_CHANGED = 2;
     ERROR = 3;
@@ -125,7 +133,7 @@ message MemcacheIncrementResponse {
 }
 
 message MemcacheBatchIncrementRequest {
-  optional string name_space = 1 [default = ""];
+  optional string name_space = 1 ;
   repeated MemcacheIncrementRequest item = 2;
   optional AppOverride override = 3;
 }
@@ -146,14 +154,14 @@ message MemcacheStatsRequest {
 }
 
 message MergedNamespaceStats {
-  required uint64 hits = 1;
-  required uint64 misses = 2;
-  required uint64 byte_hits = 3;
+  uint64 hits = 1;
+  uint64 misses = 2;
+  uint64 byte_hits = 3;
 
-  required uint64 items = 4;
-  required uint64 bytes = 5;
+  uint64 items = 4;
+ uint64 bytes = 5;
 
-  required fixed32 oldest_item_age = 6;
+ fixed32 oldest_item_age = 6;
 }
 
 message MemcacheStatsResponse {
@@ -161,14 +169,15 @@ message MemcacheStatsResponse {
 }
 
 message MemcacheGrabTailRequest {
-  required int32 item_count = 1;
-  optional string name_space = 2 [default = ""];
+ int32 item_count = 1;
+  optional string name_space = 2 ;
   optional AppOverride override = 3;
 }
 
 message MemcacheGrabTailResponse {
-  repeated group Item = 1 {
-    required bytes value = 2;
+  repeated ItemType Item = 1;
+  message ItemType {
+   bytes value = 2;
     optional fixed32 flags = 3;
   }
 }
diff --git a/internal/modules/modules_service.pb.go b/internal/modules/modules_service.pb.go
index ddfc0c04..3eadc8cc 100644
--- a/internal/modules/modules_service.pb.go
+++ b/internal/modules/modules_service.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/modules/modules_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: modules_service.proto
 
 package modules
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 ModulesServiceError_ErrorCode int32
 
@@ -29,758 +31,1226 @@ const (
 	ModulesServiceError_UNEXPECTED_STATE  ModulesServiceError_ErrorCode = 5
 )
 
-var ModulesServiceError_ErrorCode_name = map[int32]string{
-	0: "OK",
-	1: "INVALID_MODULE",
-	2: "INVALID_VERSION",
-	3: "INVALID_INSTANCES",
-	4: "TRANSIENT_ERROR",
-	5: "UNEXPECTED_STATE",
-}
-var ModulesServiceError_ErrorCode_value = map[string]int32{
-	"OK":                0,
-	"INVALID_MODULE":    1,
-	"INVALID_VERSION":   2,
-	"INVALID_INSTANCES": 3,
-	"TRANSIENT_ERROR":   4,
-	"UNEXPECTED_STATE":  5,
-}
+// Enum value maps for ModulesServiceError_ErrorCode.
+var (
+	ModulesServiceError_ErrorCode_name = map[int32]string{
+		0: "OK",
+		1: "INVALID_MODULE",
+		2: "INVALID_VERSION",
+		3: "INVALID_INSTANCES",
+		4: "TRANSIENT_ERROR",
+		5: "UNEXPECTED_STATE",
+	}
+	ModulesServiceError_ErrorCode_value = map[string]int32{
+		"OK":                0,
+		"INVALID_MODULE":    1,
+		"INVALID_VERSION":   2,
+		"INVALID_INSTANCES": 3,
+		"TRANSIENT_ERROR":   4,
+		"UNEXPECTED_STATE":  5,
+	}
+)
 
 func (x ModulesServiceError_ErrorCode) Enum() *ModulesServiceError_ErrorCode {
 	p := new(ModulesServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x ModulesServiceError_ErrorCode) String() string {
-	return proto.EnumName(ModulesServiceError_ErrorCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *ModulesServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(ModulesServiceError_ErrorCode_value, data, "ModulesServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = ModulesServiceError_ErrorCode(value)
-	return nil
+
+func (ModulesServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_modules_service_proto_enumTypes[0].Descriptor()
+}
+
+func (ModulesServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_modules_service_proto_enumTypes[0]
+}
+
+func (x ModulesServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use ModulesServiceError_ErrorCode.Descriptor instead.
 func (ModulesServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{0, 0}
+	return file_modules_service_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type ModulesServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *ModulesServiceError) Reset()         { *m = ModulesServiceError{} }
-func (m *ModulesServiceError) String() string { return proto.CompactTextString(m) }
-func (*ModulesServiceError) ProtoMessage()    {}
-func (*ModulesServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{0}
+func (x *ModulesServiceError) Reset() {
+	*x = ModulesServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ModulesServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ModulesServiceError.Unmarshal(m, b)
+
+func (x *ModulesServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ModulesServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ModulesServiceError.Marshal(b, m, deterministic)
+
+func (*ModulesServiceError) ProtoMessage() {}
+
+func (x *ModulesServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
-func (dst *ModulesServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ModulesServiceError.Merge(dst, src)
+
+// Deprecated: Use ModulesServiceError.ProtoReflect.Descriptor instead.
+func (*ModulesServiceError) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{0}
 }
-func (m *ModulesServiceError) XXX_Size() int {
-	return xxx_messageInfo_ModulesServiceError.Size(m)
+
+type GetModulesRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *ModulesServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_ModulesServiceError.DiscardUnknown(m)
+
+func (x *GetModulesRequest) Reset() {
+	*x = GetModulesRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-var xxx_messageInfo_ModulesServiceError proto.InternalMessageInfo
+func (x *GetModulesRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
 
-type GetModulesRequest struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (*GetModulesRequest) ProtoMessage() {}
+
+func (x *GetModulesRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-func (m *GetModulesRequest) Reset()         { *m = GetModulesRequest{} }
-func (m *GetModulesRequest) String() string { return proto.CompactTextString(m) }
-func (*GetModulesRequest) ProtoMessage()    {}
+// Deprecated: Use GetModulesRequest.ProtoReflect.Descriptor instead.
 func (*GetModulesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{1}
-}
-func (m *GetModulesRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetModulesRequest.Unmarshal(m, b)
+	return file_modules_service_proto_rawDescGZIP(), []int{1}
 }
-func (m *GetModulesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetModulesRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetModulesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetModulesRequest.Merge(dst, src)
+
+type GetModulesResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Module []string `protobuf:"bytes,1,rep,name=module,proto3" json:"module,omitempty"`
 }
-func (m *GetModulesRequest) XXX_Size() int {
-	return xxx_messageInfo_GetModulesRequest.Size(m)
+
+func (x *GetModulesResponse) Reset() {
+	*x = GetModulesResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetModulesRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetModulesRequest.DiscardUnknown(m)
+
+func (x *GetModulesResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_GetModulesRequest proto.InternalMessageInfo
+func (*GetModulesResponse) ProtoMessage() {}
 
-type GetModulesResponse struct {
-	Module               []string `protobuf:"bytes,1,rep,name=module" json:"module,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *GetModulesResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-func (m *GetModulesResponse) Reset()         { *m = GetModulesResponse{} }
-func (m *GetModulesResponse) String() string { return proto.CompactTextString(m) }
-func (*GetModulesResponse) ProtoMessage()    {}
+// Deprecated: Use GetModulesResponse.ProtoReflect.Descriptor instead.
 func (*GetModulesResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{2}
-}
-func (m *GetModulesResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetModulesResponse.Unmarshal(m, b)
-}
-func (m *GetModulesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetModulesResponse.Marshal(b, m, deterministic)
-}
-func (dst *GetModulesResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetModulesResponse.Merge(dst, src)
-}
-func (m *GetModulesResponse) XXX_Size() int {
-	return xxx_messageInfo_GetModulesResponse.Size(m)
-}
-func (m *GetModulesResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetModulesResponse.DiscardUnknown(m)
+	return file_modules_service_proto_rawDescGZIP(), []int{2}
 }
 
-var xxx_messageInfo_GetModulesResponse proto.InternalMessageInfo
-
-func (m *GetModulesResponse) GetModule() []string {
-	if m != nil {
-		return m.Module
+func (x *GetModulesResponse) GetModule() []string {
+	if x != nil {
+		return x.Module
 	}
 	return nil
 }
 
 type GetVersionsRequest struct {
-	Module               *string  `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetVersionsRequest) Reset()         { *m = GetVersionsRequest{} }
-func (m *GetVersionsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetVersionsRequest) ProtoMessage()    {}
-func (*GetVersionsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{3}
+	Module *string `protobuf:"bytes,1,opt,name=module,proto3,oneof" json:"module,omitempty"`
 }
-func (m *GetVersionsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetVersionsRequest.Unmarshal(m, b)
-}
-func (m *GetVersionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetVersionsRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetVersionsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetVersionsRequest.Merge(dst, src)
+
+func (x *GetVersionsRequest) Reset() {
+	*x = GetVersionsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetVersionsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetVersionsRequest.Size(m)
+
+func (x *GetVersionsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetVersionsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetVersionsRequest.DiscardUnknown(m)
+
+func (*GetVersionsRequest) ProtoMessage() {}
+
+func (x *GetVersionsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_GetVersionsRequest proto.InternalMessageInfo
+// Deprecated: Use GetVersionsRequest.ProtoReflect.Descriptor instead.
+func (*GetVersionsRequest) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *GetVersionsRequest) GetModule() string {
-	if m != nil && m.Module != nil {
-		return *m.Module
+func (x *GetVersionsRequest) GetModule() string {
+	if x != nil && x.Module != nil {
+		return *x.Module
 	}
 	return ""
 }
 
 type GetVersionsResponse struct {
-	Version              []string `protobuf:"bytes,1,rep,name=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetVersionsResponse) Reset()         { *m = GetVersionsResponse{} }
-func (m *GetVersionsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetVersionsResponse) ProtoMessage()    {}
-func (*GetVersionsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{4}
-}
-func (m *GetVersionsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetVersionsResponse.Unmarshal(m, b)
-}
-func (m *GetVersionsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetVersionsResponse.Marshal(b, m, deterministic)
+	Version []string `protobuf:"bytes,1,rep,name=version,proto3" json:"version,omitempty"`
 }
-func (dst *GetVersionsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetVersionsResponse.Merge(dst, src)
+
+func (x *GetVersionsResponse) Reset() {
+	*x = GetVersionsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetVersionsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetVersionsResponse.Size(m)
+
+func (x *GetVersionsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetVersionsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetVersionsResponse.DiscardUnknown(m)
+
+func (*GetVersionsResponse) ProtoMessage() {}
+
+func (x *GetVersionsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_GetVersionsResponse proto.InternalMessageInfo
+// Deprecated: Use GetVersionsResponse.ProtoReflect.Descriptor instead.
+func (*GetVersionsResponse) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{4}
+}
 
-func (m *GetVersionsResponse) GetVersion() []string {
-	if m != nil {
-		return m.Version
+func (x *GetVersionsResponse) GetVersion() []string {
+	if x != nil {
+		return x.Version
 	}
 	return nil
 }
 
 type GetDefaultVersionRequest struct {
-	Module               *string  `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetDefaultVersionRequest) Reset()         { *m = GetDefaultVersionRequest{} }
-func (m *GetDefaultVersionRequest) String() string { return proto.CompactTextString(m) }
-func (*GetDefaultVersionRequest) ProtoMessage()    {}
-func (*GetDefaultVersionRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{5}
+	Module *string `protobuf:"bytes,1,opt,name=module,proto3,oneof" json:"module,omitempty"`
 }
-func (m *GetDefaultVersionRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetDefaultVersionRequest.Unmarshal(m, b)
-}
-func (m *GetDefaultVersionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetDefaultVersionRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetDefaultVersionRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetDefaultVersionRequest.Merge(dst, src)
+
+func (x *GetDefaultVersionRequest) Reset() {
+	*x = GetDefaultVersionRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetDefaultVersionRequest) XXX_Size() int {
-	return xxx_messageInfo_GetDefaultVersionRequest.Size(m)
+
+func (x *GetDefaultVersionRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetDefaultVersionRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetDefaultVersionRequest.DiscardUnknown(m)
+
+func (*GetDefaultVersionRequest) ProtoMessage() {}
+
+func (x *GetDefaultVersionRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_GetDefaultVersionRequest proto.InternalMessageInfo
+// Deprecated: Use GetDefaultVersionRequest.ProtoReflect.Descriptor instead.
+func (*GetDefaultVersionRequest) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *GetDefaultVersionRequest) GetModule() string {
-	if m != nil && m.Module != nil {
-		return *m.Module
+func (x *GetDefaultVersionRequest) GetModule() string {
+	if x != nil && x.Module != nil {
+		return *x.Module
 	}
 	return ""
 }
 
 type GetDefaultVersionResponse struct {
-	Version              *string  `protobuf:"bytes,1,req,name=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetDefaultVersionResponse) Reset()         { *m = GetDefaultVersionResponse{} }
-func (m *GetDefaultVersionResponse) String() string { return proto.CompactTextString(m) }
-func (*GetDefaultVersionResponse) ProtoMessage()    {}
-func (*GetDefaultVersionResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{6}
-}
-func (m *GetDefaultVersionResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetDefaultVersionResponse.Unmarshal(m, b)
-}
-func (m *GetDefaultVersionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetDefaultVersionResponse.Marshal(b, m, deterministic)
+	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
 }
-func (dst *GetDefaultVersionResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetDefaultVersionResponse.Merge(dst, src)
+
+func (x *GetDefaultVersionResponse) Reset() {
+	*x = GetDefaultVersionResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetDefaultVersionResponse) XXX_Size() int {
-	return xxx_messageInfo_GetDefaultVersionResponse.Size(m)
+
+func (x *GetDefaultVersionResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetDefaultVersionResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetDefaultVersionResponse.DiscardUnknown(m)
+
+func (*GetDefaultVersionResponse) ProtoMessage() {}
+
+func (x *GetDefaultVersionResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_GetDefaultVersionResponse proto.InternalMessageInfo
+// Deprecated: Use GetDefaultVersionResponse.ProtoReflect.Descriptor instead.
+func (*GetDefaultVersionResponse) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{6}
+}
 
-func (m *GetDefaultVersionResponse) GetVersion() string {
-	if m != nil && m.Version != nil {
-		return *m.Version
+func (x *GetDefaultVersionResponse) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
 type GetNumInstancesRequest struct {
-	Module               *string  `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
-	Version              *string  `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetNumInstancesRequest) Reset()         { *m = GetNumInstancesRequest{} }
-func (m *GetNumInstancesRequest) String() string { return proto.CompactTextString(m) }
-func (*GetNumInstancesRequest) ProtoMessage()    {}
-func (*GetNumInstancesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{7}
-}
-func (m *GetNumInstancesRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetNumInstancesRequest.Unmarshal(m, b)
+	Module  *string `protobuf:"bytes,1,opt,name=module,proto3,oneof" json:"module,omitempty"`
+	Version *string `protobuf:"bytes,2,opt,name=version,proto3,oneof" json:"version,omitempty"`
 }
-func (m *GetNumInstancesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetNumInstancesRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetNumInstancesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetNumInstancesRequest.Merge(dst, src)
+
+func (x *GetNumInstancesRequest) Reset() {
+	*x = GetNumInstancesRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetNumInstancesRequest) XXX_Size() int {
-	return xxx_messageInfo_GetNumInstancesRequest.Size(m)
+
+func (x *GetNumInstancesRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetNumInstancesRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetNumInstancesRequest.DiscardUnknown(m)
+
+func (*GetNumInstancesRequest) ProtoMessage() {}
+
+func (x *GetNumInstancesRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_GetNumInstancesRequest proto.InternalMessageInfo
+// Deprecated: Use GetNumInstancesRequest.ProtoReflect.Descriptor instead.
+func (*GetNumInstancesRequest) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{7}
+}
 
-func (m *GetNumInstancesRequest) GetModule() string {
-	if m != nil && m.Module != nil {
-		return *m.Module
+func (x *GetNumInstancesRequest) GetModule() string {
+	if x != nil && x.Module != nil {
+		return *x.Module
 	}
 	return ""
 }
 
-func (m *GetNumInstancesRequest) GetVersion() string {
-	if m != nil && m.Version != nil {
-		return *m.Version
+func (x *GetNumInstancesRequest) GetVersion() string {
+	if x != nil && x.Version != nil {
+		return *x.Version
 	}
 	return ""
 }
 
 type GetNumInstancesResponse struct {
-	Instances            *int64   `protobuf:"varint,1,req,name=instances" json:"instances,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetNumInstancesResponse) Reset()         { *m = GetNumInstancesResponse{} }
-func (m *GetNumInstancesResponse) String() string { return proto.CompactTextString(m) }
-func (*GetNumInstancesResponse) ProtoMessage()    {}
-func (*GetNumInstancesResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{8}
-}
-func (m *GetNumInstancesResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetNumInstancesResponse.Unmarshal(m, b)
-}
-func (m *GetNumInstancesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetNumInstancesResponse.Marshal(b, m, deterministic)
+	Instances int64 `protobuf:"varint,1,opt,name=instances,proto3" json:"instances,omitempty"`
 }
-func (dst *GetNumInstancesResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetNumInstancesResponse.Merge(dst, src)
+
+func (x *GetNumInstancesResponse) Reset() {
+	*x = GetNumInstancesResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetNumInstancesResponse) XXX_Size() int {
-	return xxx_messageInfo_GetNumInstancesResponse.Size(m)
+
+func (x *GetNumInstancesResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetNumInstancesResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetNumInstancesResponse.DiscardUnknown(m)
+
+func (*GetNumInstancesResponse) ProtoMessage() {}
+
+func (x *GetNumInstancesResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_GetNumInstancesResponse proto.InternalMessageInfo
+// Deprecated: Use GetNumInstancesResponse.ProtoReflect.Descriptor instead.
+func (*GetNumInstancesResponse) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{8}
+}
 
-func (m *GetNumInstancesResponse) GetInstances() int64 {
-	if m != nil && m.Instances != nil {
-		return *m.Instances
+func (x *GetNumInstancesResponse) GetInstances() int64 {
+	if x != nil {
+		return x.Instances
 	}
 	return 0
 }
 
 type SetNumInstancesRequest struct {
-	Module               *string  `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
-	Version              *string  `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
-	Instances            *int64   `protobuf:"varint,3,req,name=instances" json:"instances,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *SetNumInstancesRequest) Reset()         { *m = SetNumInstancesRequest{} }
-func (m *SetNumInstancesRequest) String() string { return proto.CompactTextString(m) }
-func (*SetNumInstancesRequest) ProtoMessage()    {}
-func (*SetNumInstancesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{9}
+	Module    *string `protobuf:"bytes,1,opt,name=module,proto3,oneof" json:"module,omitempty"`
+	Version   *string `protobuf:"bytes,2,opt,name=version,proto3,oneof" json:"version,omitempty"`
+	Instances int64   `protobuf:"varint,3,opt,name=instances,proto3" json:"instances,omitempty"`
 }
-func (m *SetNumInstancesRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SetNumInstancesRequest.Unmarshal(m, b)
-}
-func (m *SetNumInstancesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SetNumInstancesRequest.Marshal(b, m, deterministic)
-}
-func (dst *SetNumInstancesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SetNumInstancesRequest.Merge(dst, src)
+
+func (x *SetNumInstancesRequest) Reset() {
+	*x = SetNumInstancesRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SetNumInstancesRequest) XXX_Size() int {
-	return xxx_messageInfo_SetNumInstancesRequest.Size(m)
+
+func (x *SetNumInstancesRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SetNumInstancesRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SetNumInstancesRequest.DiscardUnknown(m)
+
+func (*SetNumInstancesRequest) ProtoMessage() {}
+
+func (x *SetNumInstancesRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_SetNumInstancesRequest proto.InternalMessageInfo
+// Deprecated: Use SetNumInstancesRequest.ProtoReflect.Descriptor instead.
+func (*SetNumInstancesRequest) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{9}
+}
 
-func (m *SetNumInstancesRequest) GetModule() string {
-	if m != nil && m.Module != nil {
-		return *m.Module
+func (x *SetNumInstancesRequest) GetModule() string {
+	if x != nil && x.Module != nil {
+		return *x.Module
 	}
 	return ""
 }
 
-func (m *SetNumInstancesRequest) GetVersion() string {
-	if m != nil && m.Version != nil {
-		return *m.Version
+func (x *SetNumInstancesRequest) GetVersion() string {
+	if x != nil && x.Version != nil {
+		return *x.Version
 	}
 	return ""
 }
 
-func (m *SetNumInstancesRequest) GetInstances() int64 {
-	if m != nil && m.Instances != nil {
-		return *m.Instances
+func (x *SetNumInstancesRequest) GetInstances() int64 {
+	if x != nil {
+		return x.Instances
 	}
 	return 0
 }
 
 type SetNumInstancesResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *SetNumInstancesResponse) Reset()         { *m = SetNumInstancesResponse{} }
-func (m *SetNumInstancesResponse) String() string { return proto.CompactTextString(m) }
-func (*SetNumInstancesResponse) ProtoMessage()    {}
-func (*SetNumInstancesResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{10}
-}
-func (m *SetNumInstancesResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SetNumInstancesResponse.Unmarshal(m, b)
-}
-func (m *SetNumInstancesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SetNumInstancesResponse.Marshal(b, m, deterministic)
-}
-func (dst *SetNumInstancesResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SetNumInstancesResponse.Merge(dst, src)
-}
-func (m *SetNumInstancesResponse) XXX_Size() int {
-	return xxx_messageInfo_SetNumInstancesResponse.Size(m)
+func (x *SetNumInstancesResponse) Reset() {
+	*x = SetNumInstancesResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SetNumInstancesResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SetNumInstancesResponse.DiscardUnknown(m)
+
+func (x *SetNumInstancesResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_SetNumInstancesResponse proto.InternalMessageInfo
+func (*SetNumInstancesResponse) ProtoMessage() {}
 
-type StartModuleRequest struct {
-	Module               *string  `protobuf:"bytes,1,req,name=module" json:"module,omitempty"`
-	Version              *string  `protobuf:"bytes,2,req,name=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *SetNumInstancesResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-func (m *StartModuleRequest) Reset()         { *m = StartModuleRequest{} }
-func (m *StartModuleRequest) String() string { return proto.CompactTextString(m) }
-func (*StartModuleRequest) ProtoMessage()    {}
-func (*StartModuleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{11}
-}
-func (m *StartModuleRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StartModuleRequest.Unmarshal(m, b)
+// Deprecated: Use SetNumInstancesResponse.ProtoReflect.Descriptor instead.
+func (*SetNumInstancesResponse) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{10}
 }
-func (m *StartModuleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StartModuleRequest.Marshal(b, m, deterministic)
+
+type StartModuleRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Module  string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"`
+	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
 }
-func (dst *StartModuleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StartModuleRequest.Merge(dst, src)
+
+func (x *StartModuleRequest) Reset() {
+	*x = StartModuleRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *StartModuleRequest) XXX_Size() int {
-	return xxx_messageInfo_StartModuleRequest.Size(m)
+
+func (x *StartModuleRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *StartModuleRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StartModuleRequest.DiscardUnknown(m)
+
+func (*StartModuleRequest) ProtoMessage() {}
+
+func (x *StartModuleRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_StartModuleRequest proto.InternalMessageInfo
+// Deprecated: Use StartModuleRequest.ProtoReflect.Descriptor instead.
+func (*StartModuleRequest) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{11}
+}
 
-func (m *StartModuleRequest) GetModule() string {
-	if m != nil && m.Module != nil {
-		return *m.Module
+func (x *StartModuleRequest) GetModule() string {
+	if x != nil {
+		return x.Module
 	}
 	return ""
 }
 
-func (m *StartModuleRequest) GetVersion() string {
-	if m != nil && m.Version != nil {
-		return *m.Version
+func (x *StartModuleRequest) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
 type StartModuleResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *StartModuleResponse) Reset()         { *m = StartModuleResponse{} }
-func (m *StartModuleResponse) String() string { return proto.CompactTextString(m) }
-func (*StartModuleResponse) ProtoMessage()    {}
-func (*StartModuleResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{12}
-}
-func (m *StartModuleResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StartModuleResponse.Unmarshal(m, b)
-}
-func (m *StartModuleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StartModuleResponse.Marshal(b, m, deterministic)
-}
-func (dst *StartModuleResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StartModuleResponse.Merge(dst, src)
-}
-func (m *StartModuleResponse) XXX_Size() int {
-	return xxx_messageInfo_StartModuleResponse.Size(m)
+func (x *StartModuleResponse) Reset() {
+	*x = StartModuleResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *StartModuleResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StartModuleResponse.DiscardUnknown(m)
+
+func (x *StartModuleResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_StartModuleResponse proto.InternalMessageInfo
+func (*StartModuleResponse) ProtoMessage() {}
 
-type StopModuleRequest struct {
-	Module               *string  `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
-	Version              *string  `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *StartModuleResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-func (m *StopModuleRequest) Reset()         { *m = StopModuleRequest{} }
-func (m *StopModuleRequest) String() string { return proto.CompactTextString(m) }
-func (*StopModuleRequest) ProtoMessage()    {}
-func (*StopModuleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{13}
-}
-func (m *StopModuleRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StopModuleRequest.Unmarshal(m, b)
+// Deprecated: Use StartModuleResponse.ProtoReflect.Descriptor instead.
+func (*StartModuleResponse) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{12}
 }
-func (m *StopModuleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StopModuleRequest.Marshal(b, m, deterministic)
+
+type StopModuleRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Module  *string `protobuf:"bytes,1,opt,name=module,proto3,oneof" json:"module,omitempty"`
+	Version *string `protobuf:"bytes,2,opt,name=version,proto3,oneof" json:"version,omitempty"`
 }
-func (dst *StopModuleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StopModuleRequest.Merge(dst, src)
+
+func (x *StopModuleRequest) Reset() {
+	*x = StopModuleRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *StopModuleRequest) XXX_Size() int {
-	return xxx_messageInfo_StopModuleRequest.Size(m)
+
+func (x *StopModuleRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *StopModuleRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StopModuleRequest.DiscardUnknown(m)
+
+func (*StopModuleRequest) ProtoMessage() {}
+
+func (x *StopModuleRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_StopModuleRequest proto.InternalMessageInfo
+// Deprecated: Use StopModuleRequest.ProtoReflect.Descriptor instead.
+func (*StopModuleRequest) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{13}
+}
 
-func (m *StopModuleRequest) GetModule() string {
-	if m != nil && m.Module != nil {
-		return *m.Module
+func (x *StopModuleRequest) GetModule() string {
+	if x != nil && x.Module != nil {
+		return *x.Module
 	}
 	return ""
 }
 
-func (m *StopModuleRequest) GetVersion() string {
-	if m != nil && m.Version != nil {
-		return *m.Version
+func (x *StopModuleRequest) GetVersion() string {
+	if x != nil && x.Version != nil {
+		return *x.Version
 	}
 	return ""
 }
 
 type StopModuleResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *StopModuleResponse) Reset()         { *m = StopModuleResponse{} }
-func (m *StopModuleResponse) String() string { return proto.CompactTextString(m) }
-func (*StopModuleResponse) ProtoMessage()    {}
-func (*StopModuleResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{14}
-}
-func (m *StopModuleResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StopModuleResponse.Unmarshal(m, b)
-}
-func (m *StopModuleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StopModuleResponse.Marshal(b, m, deterministic)
-}
-func (dst *StopModuleResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StopModuleResponse.Merge(dst, src)
-}
-func (m *StopModuleResponse) XXX_Size() int {
-	return xxx_messageInfo_StopModuleResponse.Size(m)
+func (x *StopModuleResponse) Reset() {
+	*x = StopModuleResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *StopModuleResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StopModuleResponse.DiscardUnknown(m)
+
+func (x *StopModuleResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_StopModuleResponse proto.InternalMessageInfo
+func (*StopModuleResponse) ProtoMessage() {}
 
-type GetHostnameRequest struct {
-	Module               *string  `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"`
-	Version              *string  `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
-	Instance             *string  `protobuf:"bytes,3,opt,name=instance" json:"instance,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *StopModuleResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-func (m *GetHostnameRequest) Reset()         { *m = GetHostnameRequest{} }
-func (m *GetHostnameRequest) String() string { return proto.CompactTextString(m) }
-func (*GetHostnameRequest) ProtoMessage()    {}
-func (*GetHostnameRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{15}
-}
-func (m *GetHostnameRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetHostnameRequest.Unmarshal(m, b)
+// Deprecated: Use StopModuleResponse.ProtoReflect.Descriptor instead.
+func (*StopModuleResponse) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{14}
 }
-func (m *GetHostnameRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetHostnameRequest.Marshal(b, m, deterministic)
+
+type GetHostnameRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Module   *string `protobuf:"bytes,1,opt,name=module,proto3,oneof" json:"module,omitempty"`
+	Version  *string `protobuf:"bytes,2,opt,name=version,proto3,oneof" json:"version,omitempty"`
+	Instance *string `protobuf:"bytes,3,opt,name=instance,proto3,oneof" json:"instance,omitempty"`
 }
-func (dst *GetHostnameRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetHostnameRequest.Merge(dst, src)
+
+func (x *GetHostnameRequest) Reset() {
+	*x = GetHostnameRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetHostnameRequest) XXX_Size() int {
-	return xxx_messageInfo_GetHostnameRequest.Size(m)
+
+func (x *GetHostnameRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetHostnameRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetHostnameRequest.DiscardUnknown(m)
+
+func (*GetHostnameRequest) ProtoMessage() {}
+
+func (x *GetHostnameRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_GetHostnameRequest proto.InternalMessageInfo
+// Deprecated: Use GetHostnameRequest.ProtoReflect.Descriptor instead.
+func (*GetHostnameRequest) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{15}
+}
 
-func (m *GetHostnameRequest) GetModule() string {
-	if m != nil && m.Module != nil {
-		return *m.Module
+func (x *GetHostnameRequest) GetModule() string {
+	if x != nil && x.Module != nil {
+		return *x.Module
 	}
 	return ""
 }
 
-func (m *GetHostnameRequest) GetVersion() string {
-	if m != nil && m.Version != nil {
-		return *m.Version
+func (x *GetHostnameRequest) GetVersion() string {
+	if x != nil && x.Version != nil {
+		return *x.Version
 	}
 	return ""
 }
 
-func (m *GetHostnameRequest) GetInstance() string {
-	if m != nil && m.Instance != nil {
-		return *m.Instance
+func (x *GetHostnameRequest) GetInstance() string {
+	if x != nil && x.Instance != nil {
+		return *x.Instance
 	}
 	return ""
 }
 
 type GetHostnameResponse struct {
-	Hostname             *string  `protobuf:"bytes,1,req,name=hostname" json:"hostname,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetHostnameResponse) Reset()         { *m = GetHostnameResponse{} }
-func (m *GetHostnameResponse) String() string { return proto.CompactTextString(m) }
-func (*GetHostnameResponse) ProtoMessage()    {}
-func (*GetHostnameResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_modules_service_9cd3bffe4e91c59a, []int{16}
-}
-func (m *GetHostnameResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetHostnameResponse.Unmarshal(m, b)
+	Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
 }
-func (m *GetHostnameResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetHostnameResponse.Marshal(b, m, deterministic)
-}
-func (dst *GetHostnameResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetHostnameResponse.Merge(dst, src)
+
+func (x *GetHostnameResponse) Reset() {
+	*x = GetHostnameResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_modules_service_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetHostnameResponse) XXX_Size() int {
-	return xxx_messageInfo_GetHostnameResponse.Size(m)
+
+func (x *GetHostnameResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetHostnameResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetHostnameResponse.DiscardUnknown(m)
+
+func (*GetHostnameResponse) ProtoMessage() {}
+
+func (x *GetHostnameResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_modules_service_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)
 }
 
-var xxx_messageInfo_GetHostnameResponse proto.InternalMessageInfo
+// Deprecated: Use GetHostnameResponse.ProtoReflect.Descriptor instead.
+func (*GetHostnameResponse) Descriptor() ([]byte, []int) {
+	return file_modules_service_proto_rawDescGZIP(), []int{16}
+}
 
-func (m *GetHostnameResponse) GetHostname() string {
-	if m != nil && m.Hostname != nil {
-		return *m.Hostname
+func (x *GetHostnameResponse) GetHostname() string {
+	if x != nil {
+		return x.Hostname
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*ModulesServiceError)(nil), "appengine.ModulesServiceError")
-	proto.RegisterType((*GetModulesRequest)(nil), "appengine.GetModulesRequest")
-	proto.RegisterType((*GetModulesResponse)(nil), "appengine.GetModulesResponse")
-	proto.RegisterType((*GetVersionsRequest)(nil), "appengine.GetVersionsRequest")
-	proto.RegisterType((*GetVersionsResponse)(nil), "appengine.GetVersionsResponse")
-	proto.RegisterType((*GetDefaultVersionRequest)(nil), "appengine.GetDefaultVersionRequest")
-	proto.RegisterType((*GetDefaultVersionResponse)(nil), "appengine.GetDefaultVersionResponse")
-	proto.RegisterType((*GetNumInstancesRequest)(nil), "appengine.GetNumInstancesRequest")
-	proto.RegisterType((*GetNumInstancesResponse)(nil), "appengine.GetNumInstancesResponse")
-	proto.RegisterType((*SetNumInstancesRequest)(nil), "appengine.SetNumInstancesRequest")
-	proto.RegisterType((*SetNumInstancesResponse)(nil), "appengine.SetNumInstancesResponse")
-	proto.RegisterType((*StartModuleRequest)(nil), "appengine.StartModuleRequest")
-	proto.RegisterType((*StartModuleResponse)(nil), "appengine.StartModuleResponse")
-	proto.RegisterType((*StopModuleRequest)(nil), "appengine.StopModuleRequest")
-	proto.RegisterType((*StopModuleResponse)(nil), "appengine.StopModuleResponse")
-	proto.RegisterType((*GetHostnameRequest)(nil), "appengine.GetHostnameRequest")
-	proto.RegisterType((*GetHostnameResponse)(nil), "appengine.GetHostnameResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/modules/modules_service.proto", fileDescriptor_modules_service_9cd3bffe4e91c59a)
-}
-
-var fileDescriptor_modules_service_9cd3bffe4e91c59a = []byte{
-	// 457 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xc1, 0x6f, 0xd3, 0x30,
-	0x14, 0xc6, 0x69, 0x02, 0xdb, 0xf2, 0x0e, 0x90, 0x3a, 0x5b, 0xd7, 0x4d, 0x1c, 0x50, 0x4e, 0x1c,
-	0x50, 0x2b, 0x90, 0x10, 0xe7, 0xae, 0x35, 0x25, 0xb0, 0xa5, 0x28, 0xce, 0x2a, 0xc4, 0xa5, 0x0a,
-	0xdb, 0x23, 0x8b, 0x94, 0xda, 0xc1, 0x76, 0x77, 0xe4, 0xbf, 0xe0, 0xff, 0x45, 0x4b, 0xed, 0xb6,
-	0x81, 0x4e, 0x45, 0x68, 0xa7, 0xe4, 0x7d, 0xfe, 0xfc, 0x7b, 0x9f, 0x5f, 0xac, 0xc0, 0x59, 0x2e,
-	0x44, 0x5e, 0x62, 0x2f, 0x17, 0x65, 0xc6, 0xf3, 0x9e, 0x90, 0x79, 0x3f, 0xab, 0x2a, 0xe4, 0x79,
-	0xc1, 0xb1, 0x5f, 0x70, 0x8d, 0x92, 0x67, 0x65, 0x7f, 0x2e, 0xae, 0x17, 0x25, 0x2a, 0xfb, 0x9c,
-	0x29, 0x94, 0xb7, 0xc5, 0x15, 0xf6, 0x2a, 0x29, 0xb4, 0x20, 0xde, 0x6a, 0x47, 0xf8, 0xab, 0x05,
-	0xc1, 0xc5, 0xd2, 0xc4, 0x96, 0x1e, 0x2a, 0xa5, 0x90, 0xe1, 0x4f, 0xf0, 0xea, 0x97, 0xa1, 0xb8,
-	0x46, 0xb2, 0x07, 0xce, 0xe4, 0x93, 0xff, 0x88, 0x10, 0x78, 0x1a, 0xc5, 0xd3, 0xc1, 0x79, 0x34,
-	0x9a, 0x5d, 0x4c, 0x46, 0x97, 0xe7, 0xd4, 0x6f, 0x91, 0x00, 0x9e, 0x59, 0x6d, 0x4a, 0x13, 0x16,
-	0x4d, 0x62, 0xdf, 0x21, 0x47, 0xd0, 0xb6, 0x62, 0x14, 0xb3, 0x74, 0x10, 0x0f, 0x29, 0xf3, 0xdd,
-	0x3b, 0x6f, 0x9a, 0x0c, 0x62, 0x16, 0xd1, 0x38, 0x9d, 0xd1, 0x24, 0x99, 0x24, 0xfe, 0x63, 0x72,
-	0x08, 0xfe, 0x65, 0x4c, 0xbf, 0x7c, 0xa6, 0xc3, 0x94, 0x8e, 0x66, 0x2c, 0x1d, 0xa4, 0xd4, 0x7f,
-	0x12, 0x06, 0xd0, 0x1e, 0xa3, 0x36, 0xc9, 0x12, 0xfc, 0xb1, 0x40, 0xa5, 0xc3, 0x57, 0x40, 0x36,
-	0x45, 0x55, 0x09, 0xae, 0x90, 0x74, 0x60, 0x6f, 0x79, 0xcc, 0x6e, 0xeb, 0x85, 0xfb, 0xd2, 0x4b,
-	0x4c, 0x65, 0xdc, 0x53, 0x94, 0xaa, 0x10, 0xdc, 0x32, 0x1a, 0xee, 0xd6, 0x86, 0xbb, 0x0f, 0x41,
-	0xc3, 0x6d, 0xe0, 0x5d, 0xd8, 0xbf, 0x5d, 0x6a, 0x86, 0x6e, 0xcb, 0xf0, 0x0d, 0x74, 0xc7, 0xa8,
-	0x47, 0xf8, 0x3d, 0x5b, 0x94, 0x76, 0xdf, 0xae, 0x26, 0x6f, 0xe1, 0x64, 0xcb, 0x9e, 0x6d, 0xad,
-	0x9c, 0xcd, 0x56, 0x1f, 0xa1, 0x33, 0x46, 0x1d, 0x2f, 0xe6, 0x11, 0x57, 0x3a, 0xe3, 0x57, 0xb8,
-	0xeb, 0x34, 0x9b, 0x2c, 0xa7, 0x5e, 0x58, 0xb1, 0xde, 0xc1, 0xf1, 0x5f, 0x2c, 0x13, 0xe0, 0x39,
-	0x78, 0x85, 0x15, 0xeb, 0x08, 0x6e, 0xb2, 0x16, 0xc2, 0x1b, 0xe8, 0xb0, 0x07, 0x0a, 0xd1, 0xec,
-	0xe4, 0xfe, 0xd9, 0xe9, 0x04, 0x8e, 0xd9, 0xf6, 0x88, 0xe1, 0x7b, 0x20, 0x4c, 0x67, 0xd2, 0xdc,
-	0x81, 0x6d, 0x01, 0x9c, 0xfb, 0x02, 0x34, 0x26, 0x7a, 0x04, 0x41, 0x83, 0x63, 0xf0, 0x14, 0xda,
-	0x4c, 0x8b, 0xea, 0x7e, 0xfa, 0xbf, 0xcd, 0xf8, 0xf0, 0x2e, 0xe5, 0x1a, 0x63, 0xe0, 0xdf, 0xea,
-	0xfb, 0xf8, 0x41, 0x28, 0xcd, 0xb3, 0xf9, 0xff, 0xd3, 0xc9, 0x29, 0x1c, 0xd8, 0x59, 0x75, 0xdd,
-	0x7a, 0x69, 0x55, 0x87, 0xaf, 0xeb, 0x5b, 0xbc, 0xee, 0x61, 0xbe, 0xec, 0x29, 0x1c, 0xdc, 0x18,
-	0xcd, 0x8c, 0x68, 0x55, 0x9f, 0x79, 0x5f, 0xf7, 0xcd, 0x5f, 0xe2, 0x77, 0x00, 0x00, 0x00, 0xff,
-	0xff, 0x6e, 0xbc, 0xe0, 0x61, 0x5c, 0x04, 0x00, 0x00,
+var File_modules_service_proto protoreflect.FileDescriptor
+
+var file_modules_service_proto_rawDesc = []byte{
+	0x0a, 0x15, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x13, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x53, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x7e, 0x0a, 0x09, 0x45, 0x72,
+	0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12,
+	0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c,
+	0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x56,
+	0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x56, 0x41,
+	0x4c, 0x49, 0x44, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x03, 0x12,
+	0x13, 0x0a, 0x0f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x52, 0x52,
+	0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54,
+	0x45, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x05, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65,
+	0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,
+	0x2c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18,
+	0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x3c, 0x0a,
+	0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01,
+	0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x47,
+	0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x18,
+	0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75,
+	0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75,
+	0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
+	0x22, 0x35, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a,
+	0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x75,
+	0x6d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d,
+	0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a,
+	0x07, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x22, 0x37, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x49, 0x6e,
+	0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x89, 0x01,
+	0x0a, 0x16, 0x53, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75,
+	0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75,
+	0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+	0x6e, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+	0x65, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x0a, 0x0a,
+	0x08, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x65, 0x74,
+	0x4e, 0x75, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4d, 0x6f, 0x64,
+	0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f,
+	0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75,
+	0x6c, 0x65, 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, 0x15, 0x0a, 0x13,
+	0x53, 0x74, 0x61, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x22, 0x66, 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x70, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
+	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75,
+	0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75,
+	0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+	0x6e, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42,
+	0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x14, 0x0a, 0x12, 0x53,
+	0x74, 0x6f, 0x70, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x95, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d,
+	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75,
+	0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75,
+	0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+	0x6e, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+	0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
+	0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09,
+	0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x31, 0x0a, 0x13, 0x47, 0x65, 0x74,
+	0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x2e, 0x5a, 0x2c,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
+	0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65,
+	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_modules_service_proto_rawDescOnce sync.Once
+	file_modules_service_proto_rawDescData = file_modules_service_proto_rawDesc
+)
+
+func file_modules_service_proto_rawDescGZIP() []byte {
+	file_modules_service_proto_rawDescOnce.Do(func() {
+		file_modules_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_modules_service_proto_rawDescData)
+	})
+	return file_modules_service_proto_rawDescData
+}
+
+var file_modules_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_modules_service_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
+var file_modules_service_proto_goTypes = []interface{}{
+	(ModulesServiceError_ErrorCode)(0), // 0: appengine.ModulesServiceError.ErrorCode
+	(*ModulesServiceError)(nil),        // 1: appengine.ModulesServiceError
+	(*GetModulesRequest)(nil),          // 2: appengine.GetModulesRequest
+	(*GetModulesResponse)(nil),         // 3: appengine.GetModulesResponse
+	(*GetVersionsRequest)(nil),         // 4: appengine.GetVersionsRequest
+	(*GetVersionsResponse)(nil),        // 5: appengine.GetVersionsResponse
+	(*GetDefaultVersionRequest)(nil),   // 6: appengine.GetDefaultVersionRequest
+	(*GetDefaultVersionResponse)(nil),  // 7: appengine.GetDefaultVersionResponse
+	(*GetNumInstancesRequest)(nil),     // 8: appengine.GetNumInstancesRequest
+	(*GetNumInstancesResponse)(nil),    // 9: appengine.GetNumInstancesResponse
+	(*SetNumInstancesRequest)(nil),     // 10: appengine.SetNumInstancesRequest
+	(*SetNumInstancesResponse)(nil),    // 11: appengine.SetNumInstancesResponse
+	(*StartModuleRequest)(nil),         // 12: appengine.StartModuleRequest
+	(*StartModuleResponse)(nil),        // 13: appengine.StartModuleResponse
+	(*StopModuleRequest)(nil),          // 14: appengine.StopModuleRequest
+	(*StopModuleResponse)(nil),         // 15: appengine.StopModuleResponse
+	(*GetHostnameRequest)(nil),         // 16: appengine.GetHostnameRequest
+	(*GetHostnameResponse)(nil),        // 17: appengine.GetHostnameResponse
+}
+var file_modules_service_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_modules_service_proto_init() }
+func file_modules_service_proto_init() {
+	if File_modules_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_modules_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ModulesServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetModulesRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetModulesResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetVersionsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetVersionsResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetDefaultVersionRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetDefaultVersionResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetNumInstancesRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetNumInstancesResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetNumInstancesRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetNumInstancesResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StartModuleRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StartModuleResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StopModuleRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StopModuleResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetHostnameRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_modules_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetHostnameResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_modules_service_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	file_modules_service_proto_msgTypes[5].OneofWrappers = []interface{}{}
+	file_modules_service_proto_msgTypes[7].OneofWrappers = []interface{}{}
+	file_modules_service_proto_msgTypes[9].OneofWrappers = []interface{}{}
+	file_modules_service_proto_msgTypes[13].OneofWrappers = []interface{}{}
+	file_modules_service_proto_msgTypes[15].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_modules_service_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   17,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_modules_service_proto_goTypes,
+		DependencyIndexes: file_modules_service_proto_depIdxs,
+		EnumInfos:         file_modules_service_proto_enumTypes,
+		MessageInfos:      file_modules_service_proto_msgTypes,
+	}.Build()
+	File_modules_service_proto = out.File
+	file_modules_service_proto_rawDesc = nil
+	file_modules_service_proto_goTypes = nil
+	file_modules_service_proto_depIdxs = nil
 }
diff --git a/internal/modules/modules_service.proto b/internal/modules/modules_service.proto
index d29f0065..90552e42 100644
--- a/internal/modules/modules_service.proto
+++ b/internal/modules/modules_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "modules";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/modules";
 
 package appengine;
 
@@ -34,7 +34,7 @@ message GetDefaultVersionRequest {
 }
 
 message GetDefaultVersionResponse {
-  required string version = 1;
+  string version = 1;
 }
 
 message GetNumInstancesRequest {
@@ -43,20 +43,20 @@ message GetNumInstancesRequest {
 }
 
 message GetNumInstancesResponse {
-  required int64 instances = 1;
+  int64 instances = 1;
 }
 
 message SetNumInstancesRequest {
   optional string module = 1;
   optional string version = 2;
-  required int64 instances = 3;
+  int64 instances = 3;
 }
 
 message SetNumInstancesResponse {}
 
 message StartModuleRequest {
-  required string module = 1;
-  required string version = 2;
+  string module = 1;
+  string version = 2;
 }
 
 message StartModuleResponse {}
@@ -75,6 +75,6 @@ message GetHostnameRequest {
 }
 
 message GetHostnameResponse {
-  required string hostname = 1;
+  string hostname = 1;
 }
 
diff --git a/internal/regen.sh b/internal/regen.sh
index 2fdb546a..477695eb 100755
--- a/internal/regen.sh
+++ b/internal/regen.sh
@@ -2,7 +2,7 @@
 #
 # This script rebuilds the generated code for the protocol buffers.
 # To run this you will need protoc and goprotobuf installed;
-# see https://github.com/golang/protobuf for instructions.
+# see https://google.golang.org/protobuf for instructions.
 
 PKG=google.golang.org/appengine
 
@@ -27,14 +27,9 @@ cd $base
 # Run protoc once per package.
 for dir in $(find $PKG/internal -name '*.proto' | xargs dirname | sort | uniq); do
 	echo 1>&2 "* $dir"
-	protoc --go_out=. $dir/*.proto
-done
-
-for f in $(find $PKG/internal -name '*.pb.go'); do
-  # Remove proto.RegisterEnum calls.
-  # These cause duplicate registration panics when these packages
-  # are used on classic App Engine. proto.RegisterEnum only affects
-  # parsing the text format; we don't care about that.
-  # https://code.google.com/p/googleappengine/issues/detail?id=11670#c17
-  sed -i '/proto.RegisterEnum/d' $f
+	bname=$(basename $dir)
+	pushd ${pkgdir}/internal/${bname}
+	echo "cmd:" protoc -I=.  -I=${base}  --go_opt=paths=source_relative --go_out=. *.proto
+	protoc -I=. -I=${base} --go_opt=paths=source_relative --go_out=. *.proto
+	popd
 done
diff --git a/internal/remote_api/remote_api.pb.go b/internal/remote_api/remote_api.pb.go
index 8d782a38..5152bdc2 100644
--- a/internal/remote_api/remote_api.pb.go
+++ b/internal/remote_api/remote_api.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/remote_api/remote_api.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: remote_api.proto
 
 package remote_api
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 RpcError_ErrorCode int32
 
@@ -36,326 +38,500 @@ const (
 	RpcError_DEADLINE_EXCEEDED   RpcError_ErrorCode = 12
 )
 
-var RpcError_ErrorCode_name = map[int32]string{
-	0:  "UNKNOWN",
-	1:  "CALL_NOT_FOUND",
-	2:  "PARSE_ERROR",
-	3:  "SECURITY_VIOLATION",
-	4:  "OVER_QUOTA",
-	5:  "REQUEST_TOO_LARGE",
-	6:  "CAPABILITY_DISABLED",
-	7:  "FEATURE_DISABLED",
-	8:  "BAD_REQUEST",
-	9:  "RESPONSE_TOO_LARGE",
-	10: "CANCELLED",
-	11: "REPLAY_ERROR",
-	12: "DEADLINE_EXCEEDED",
-}
-var RpcError_ErrorCode_value = map[string]int32{
-	"UNKNOWN":             0,
-	"CALL_NOT_FOUND":      1,
-	"PARSE_ERROR":         2,
-	"SECURITY_VIOLATION":  3,
-	"OVER_QUOTA":          4,
-	"REQUEST_TOO_LARGE":   5,
-	"CAPABILITY_DISABLED": 6,
-	"FEATURE_DISABLED":    7,
-	"BAD_REQUEST":         8,
-	"RESPONSE_TOO_LARGE":  9,
-	"CANCELLED":           10,
-	"REPLAY_ERROR":        11,
-	"DEADLINE_EXCEEDED":   12,
-}
+// Enum value maps for RpcError_ErrorCode.
+var (
+	RpcError_ErrorCode_name = map[int32]string{
+		0:  "UNKNOWN",
+		1:  "CALL_NOT_FOUND",
+		2:  "PARSE_ERROR",
+		3:  "SECURITY_VIOLATION",
+		4:  "OVER_QUOTA",
+		5:  "REQUEST_TOO_LARGE",
+		6:  "CAPABILITY_DISABLED",
+		7:  "FEATURE_DISABLED",
+		8:  "BAD_REQUEST",
+		9:  "RESPONSE_TOO_LARGE",
+		10: "CANCELLED",
+		11: "REPLAY_ERROR",
+		12: "DEADLINE_EXCEEDED",
+	}
+	RpcError_ErrorCode_value = map[string]int32{
+		"UNKNOWN":             0,
+		"CALL_NOT_FOUND":      1,
+		"PARSE_ERROR":         2,
+		"SECURITY_VIOLATION":  3,
+		"OVER_QUOTA":          4,
+		"REQUEST_TOO_LARGE":   5,
+		"CAPABILITY_DISABLED": 6,
+		"FEATURE_DISABLED":    7,
+		"BAD_REQUEST":         8,
+		"RESPONSE_TOO_LARGE":  9,
+		"CANCELLED":           10,
+		"REPLAY_ERROR":        11,
+		"DEADLINE_EXCEEDED":   12,
+	}
+)
 
 func (x RpcError_ErrorCode) Enum() *RpcError_ErrorCode {
 	p := new(RpcError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x RpcError_ErrorCode) String() string {
-	return proto.EnumName(RpcError_ErrorCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *RpcError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(RpcError_ErrorCode_value, data, "RpcError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = RpcError_ErrorCode(value)
-	return nil
-}
-func (RpcError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_remote_api_1978114ec33a273d, []int{2, 0}
+
+func (RpcError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_remote_api_proto_enumTypes[0].Descriptor()
 }
 
-type Request struct {
-	ServiceName          *string  `protobuf:"bytes,2,req,name=service_name,json=serviceName" json:"service_name,omitempty"`
-	Method               *string  `protobuf:"bytes,3,req,name=method" json:"method,omitempty"`
-	Request              []byte   `protobuf:"bytes,4,req,name=request" json:"request,omitempty"`
-	RequestId            *string  `protobuf:"bytes,5,opt,name=request_id,json=requestId" json:"request_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Request) Reset()         { *m = Request{} }
-func (m *Request) String() string { return proto.CompactTextString(m) }
-func (*Request) ProtoMessage()    {}
-func (*Request) Descriptor() ([]byte, []int) {
-	return fileDescriptor_remote_api_1978114ec33a273d, []int{0}
+func (RpcError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_remote_api_proto_enumTypes[0]
 }
-func (m *Request) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Request.Unmarshal(m, b)
+
+func (x RpcError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Request.Marshal(b, m, deterministic)
+
+// Deprecated: Use RpcError_ErrorCode.Descriptor instead.
+func (RpcError_ErrorCode) EnumDescriptor() ([]byte, []int) {
+	return file_remote_api_proto_rawDescGZIP(), []int{2, 0}
 }
-func (dst *Request) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Request.Merge(dst, src)
+
+type Request struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ServiceName string  `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
+	Method      string  `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"`
+	Request     []byte  `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"`
+	RequestId   *string `protobuf:"bytes,5,opt,name=request_id,json=requestId,proto3,oneof" json:"request_id,omitempty"`
+}
+
+func (x *Request) Reset() {
+	*x = Request{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_remote_api_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Request) XXX_Size() int {
-	return xxx_messageInfo_Request.Size(m)
+
+func (x *Request) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Request) XXX_DiscardUnknown() {
-	xxx_messageInfo_Request.DiscardUnknown(m)
+
+func (*Request) ProtoMessage() {}
+
+func (x *Request) ProtoReflect() protoreflect.Message {
+	mi := &file_remote_api_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)
 }
 
-var xxx_messageInfo_Request proto.InternalMessageInfo
+// Deprecated: Use Request.ProtoReflect.Descriptor instead.
+func (*Request) Descriptor() ([]byte, []int) {
+	return file_remote_api_proto_rawDescGZIP(), []int{0}
+}
 
-func (m *Request) GetServiceName() string {
-	if m != nil && m.ServiceName != nil {
-		return *m.ServiceName
+func (x *Request) GetServiceName() string {
+	if x != nil {
+		return x.ServiceName
 	}
 	return ""
 }
 
-func (m *Request) GetMethod() string {
-	if m != nil && m.Method != nil {
-		return *m.Method
+func (x *Request) GetMethod() string {
+	if x != nil {
+		return x.Method
 	}
 	return ""
 }
 
-func (m *Request) GetRequest() []byte {
-	if m != nil {
-		return m.Request
+func (x *Request) GetRequest() []byte {
+	if x != nil {
+		return x.Request
 	}
 	return nil
 }
 
-func (m *Request) GetRequestId() string {
-	if m != nil && m.RequestId != nil {
-		return *m.RequestId
+func (x *Request) GetRequestId() string {
+	if x != nil && x.RequestId != nil {
+		return *x.RequestId
 	}
 	return ""
 }
 
 type ApplicationError struct {
-	Code                 *int32   `protobuf:"varint,1,req,name=code" json:"code,omitempty"`
-	Detail               *string  `protobuf:"bytes,2,req,name=detail" json:"detail,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ApplicationError) Reset()         { *m = ApplicationError{} }
-func (m *ApplicationError) String() string { return proto.CompactTextString(m) }
-func (*ApplicationError) ProtoMessage()    {}
-func (*ApplicationError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_remote_api_1978114ec33a273d, []int{1}
+	Code   int32  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
+	Detail string `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"`
 }
-func (m *ApplicationError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ApplicationError.Unmarshal(m, b)
-}
-func (m *ApplicationError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ApplicationError.Marshal(b, m, deterministic)
-}
-func (dst *ApplicationError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ApplicationError.Merge(dst, src)
+
+func (x *ApplicationError) Reset() {
+	*x = ApplicationError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_remote_api_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ApplicationError) XXX_Size() int {
-	return xxx_messageInfo_ApplicationError.Size(m)
+
+func (x *ApplicationError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ApplicationError) XXX_DiscardUnknown() {
-	xxx_messageInfo_ApplicationError.DiscardUnknown(m)
+
+func (*ApplicationError) ProtoMessage() {}
+
+func (x *ApplicationError) ProtoReflect() protoreflect.Message {
+	mi := &file_remote_api_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)
 }
 
-var xxx_messageInfo_ApplicationError proto.InternalMessageInfo
+// Deprecated: Use ApplicationError.ProtoReflect.Descriptor instead.
+func (*ApplicationError) Descriptor() ([]byte, []int) {
+	return file_remote_api_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *ApplicationError) GetCode() int32 {
-	if m != nil && m.Code != nil {
-		return *m.Code
+func (x *ApplicationError) GetCode() int32 {
+	if x != nil {
+		return x.Code
 	}
 	return 0
 }
 
-func (m *ApplicationError) GetDetail() string {
-	if m != nil && m.Detail != nil {
-		return *m.Detail
+func (x *ApplicationError) GetDetail() string {
+	if x != nil {
+		return x.Detail
 	}
 	return ""
 }
 
 type RpcError struct {
-	Code                 *int32   `protobuf:"varint,1,req,name=code" json:"code,omitempty"`
-	Detail               *string  `protobuf:"bytes,2,opt,name=detail" json:"detail,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *RpcError) Reset()         { *m = RpcError{} }
-func (m *RpcError) String() string { return proto.CompactTextString(m) }
-func (*RpcError) ProtoMessage()    {}
-func (*RpcError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_remote_api_1978114ec33a273d, []int{2}
-}
-func (m *RpcError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RpcError.Unmarshal(m, b)
+	Code   int32   `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
+	Detail *string `protobuf:"bytes,2,opt,name=detail,proto3,oneof" json:"detail,omitempty"`
 }
-func (m *RpcError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RpcError.Marshal(b, m, deterministic)
-}
-func (dst *RpcError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RpcError.Merge(dst, src)
+
+func (x *RpcError) Reset() {
+	*x = RpcError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_remote_api_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *RpcError) XXX_Size() int {
-	return xxx_messageInfo_RpcError.Size(m)
+
+func (x *RpcError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *RpcError) XXX_DiscardUnknown() {
-	xxx_messageInfo_RpcError.DiscardUnknown(m)
+
+func (*RpcError) ProtoMessage() {}
+
+func (x *RpcError) ProtoReflect() protoreflect.Message {
+	mi := &file_remote_api_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)
 }
 
-var xxx_messageInfo_RpcError proto.InternalMessageInfo
+// Deprecated: Use RpcError.ProtoReflect.Descriptor instead.
+func (*RpcError) Descriptor() ([]byte, []int) {
+	return file_remote_api_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *RpcError) GetCode() int32 {
-	if m != nil && m.Code != nil {
-		return *m.Code
+func (x *RpcError) GetCode() int32 {
+	if x != nil {
+		return x.Code
 	}
 	return 0
 }
 
-func (m *RpcError) GetDetail() string {
-	if m != nil && m.Detail != nil {
-		return *m.Detail
+func (x *RpcError) GetDetail() string {
+	if x != nil && x.Detail != nil {
+		return *x.Detail
 	}
 	return ""
 }
 
 type Response struct {
-	Response             []byte            `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Exception            []byte            `protobuf:"bytes,2,opt,name=exception" json:"exception,omitempty"`
-	ApplicationError     *ApplicationError `protobuf:"bytes,3,opt,name=application_error,json=applicationError" json:"application_error,omitempty"`
-	JavaException        []byte            `protobuf:"bytes,4,opt,name=java_exception,json=javaException" json:"java_exception,omitempty"`
-	RpcError             *RpcError         `protobuf:"bytes,5,opt,name=rpc_error,json=rpcError" json:"rpc_error,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *Response) Reset()         { *m = Response{} }
-func (m *Response) String() string { return proto.CompactTextString(m) }
-func (*Response) ProtoMessage()    {}
-func (*Response) Descriptor() ([]byte, []int) {
-	return fileDescriptor_remote_api_1978114ec33a273d, []int{3}
-}
-func (m *Response) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Response.Unmarshal(m, b)
-}
-func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Response.Marshal(b, m, deterministic)
-}
-func (dst *Response) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Response.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Response         []byte            `protobuf:"bytes,1,opt,name=response,proto3,oneof" json:"response,omitempty"`
+	Exception        []byte            `protobuf:"bytes,2,opt,name=exception,proto3,oneof" json:"exception,omitempty"`
+	ApplicationError *ApplicationError `protobuf:"bytes,3,opt,name=application_error,json=applicationError,proto3,oneof" json:"application_error,omitempty"`
+	JavaException    []byte            `protobuf:"bytes,4,opt,name=java_exception,json=javaException,proto3,oneof" json:"java_exception,omitempty"`
+	RpcError         *RpcError         `protobuf:"bytes,5,opt,name=rpc_error,json=rpcError,proto3,oneof" json:"rpc_error,omitempty"`
+}
+
+func (x *Response) Reset() {
+	*x = Response{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_remote_api_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Response) XXX_Size() int {
-	return xxx_messageInfo_Response.Size(m)
+
+func (x *Response) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Response) XXX_DiscardUnknown() {
-	xxx_messageInfo_Response.DiscardUnknown(m)
+
+func (*Response) ProtoMessage() {}
+
+func (x *Response) ProtoReflect() protoreflect.Message {
+	mi := &file_remote_api_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)
 }
 
-var xxx_messageInfo_Response proto.InternalMessageInfo
+// Deprecated: Use Response.ProtoReflect.Descriptor instead.
+func (*Response) Descriptor() ([]byte, []int) {
+	return file_remote_api_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *Response) GetResponse() []byte {
-	if m != nil {
-		return m.Response
+func (x *Response) GetResponse() []byte {
+	if x != nil {
+		return x.Response
 	}
 	return nil
 }
 
-func (m *Response) GetException() []byte {
-	if m != nil {
-		return m.Exception
+func (x *Response) GetException() []byte {
+	if x != nil {
+		return x.Exception
 	}
 	return nil
 }
 
-func (m *Response) GetApplicationError() *ApplicationError {
-	if m != nil {
-		return m.ApplicationError
+func (x *Response) GetApplicationError() *ApplicationError {
+	if x != nil {
+		return x.ApplicationError
 	}
 	return nil
 }
 
-func (m *Response) GetJavaException() []byte {
-	if m != nil {
-		return m.JavaException
+func (x *Response) GetJavaException() []byte {
+	if x != nil {
+		return x.JavaException
 	}
 	return nil
 }
 
-func (m *Response) GetRpcError() *RpcError {
-	if m != nil {
-		return m.RpcError
+func (x *Response) GetRpcError() *RpcError {
+	if x != nil {
+		return x.RpcError
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*Request)(nil), "remote_api.Request")
-	proto.RegisterType((*ApplicationError)(nil), "remote_api.ApplicationError")
-	proto.RegisterType((*RpcError)(nil), "remote_api.RpcError")
-	proto.RegisterType((*Response)(nil), "remote_api.Response")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/remote_api/remote_api.proto", fileDescriptor_remote_api_1978114ec33a273d)
-}
-
-var fileDescriptor_remote_api_1978114ec33a273d = []byte{
-	// 531 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x51, 0x6e, 0xd3, 0x40,
-	0x10, 0x86, 0xb1, 0x9b, 0x34, 0xf1, 0xc4, 0x2d, 0xdb, 0xa5, 0x14, 0x0b, 0x15, 0x29, 0x44, 0x42,
-	0xca, 0x53, 0x2a, 0x38, 0x00, 0x62, 0x63, 0x6f, 0x91, 0x85, 0x65, 0xa7, 0x6b, 0xbb, 0x50, 0x5e,
-	0x56, 0x2b, 0x67, 0x65, 0x8c, 0x12, 0xaf, 0xd9, 0x98, 0x8a, 0x17, 0x6e, 0xc0, 0xb5, 0x38, 0x0c,
-	0xb7, 0x40, 0x36, 0x6e, 0x63, 0xf5, 0x89, 0xb7, 0x7f, 0x7e, 0x7b, 0xe6, 0x1b, 0xcd, 0xcc, 0xc2,
-	0xbb, 0x5c, 0xa9, 0x7c, 0x23, 0x17, 0xb9, 0xda, 0x88, 0x32, 0x5f, 0x28, 0x9d, 0x5f, 0x88, 0xaa,
-	0x92, 0x65, 0x5e, 0x94, 0xf2, 0xa2, 0x28, 0x6b, 0xa9, 0x4b, 0xb1, 0xb9, 0xd0, 0x72, 0xab, 0x6a,
-	0xc9, 0x45, 0x55, 0xf4, 0xe4, 0xa2, 0xd2, 0xaa, 0x56, 0x18, 0xf6, 0xce, 0xec, 0x27, 0x8c, 0x98,
-	0xfc, 0xf6, 0x5d, 0xee, 0x6a, 0xfc, 0x12, 0xec, 0x9d, 0xd4, 0xb7, 0x45, 0x26, 0x79, 0x29, 0xb6,
-	0xd2, 0x31, 0xa7, 0xe6, 0xdc, 0x62, 0x93, 0xce, 0x0b, 0xc5, 0x56, 0xe2, 0x33, 0x38, 0xdc, 0xca,
-	0xfa, 0x8b, 0x5a, 0x3b, 0x07, 0xed, 0xc7, 0x2e, 0xc2, 0x0e, 0x8c, 0xf4, 0xbf, 0x2a, 0xce, 0x60,
-	0x6a, 0xce, 0x6d, 0x76, 0x17, 0xe2, 0x17, 0x00, 0x9d, 0xe4, 0xc5, 0xda, 0x19, 0x4e, 0x8d, 0xb9,
-	0xc5, 0xac, 0xce, 0xf1, 0xd7, 0xb3, 0xb7, 0x80, 0x48, 0x55, 0x6d, 0x8a, 0x4c, 0xd4, 0x85, 0x2a,
-	0xa9, 0xd6, 0x4a, 0x63, 0x0c, 0x83, 0x4c, 0xad, 0xa5, 0x63, 0x4c, 0xcd, 0xf9, 0x90, 0xb5, 0xba,
-	0x01, 0xaf, 0x65, 0x2d, 0x8a, 0x4d, 0xd7, 0x55, 0x17, 0xcd, 0x7e, 0x9b, 0x30, 0x66, 0x55, 0xf6,
-	0x7f, 0x89, 0x46, 0x2f, 0xf1, 0x97, 0x09, 0x56, 0x9b, 0xe5, 0x36, 0x7f, 0x4d, 0x60, 0x94, 0x86,
-	0x1f, 0xc2, 0xe8, 0x63, 0x88, 0x1e, 0x61, 0x0c, 0xc7, 0x2e, 0x09, 0x02, 0x1e, 0x46, 0x09, 0xbf,
-	0x8c, 0xd2, 0xd0, 0x43, 0x06, 0x7e, 0x0c, 0x93, 0x15, 0x61, 0x31, 0xe5, 0x94, 0xb1, 0x88, 0x21,
-	0x13, 0x9f, 0x01, 0x8e, 0xa9, 0x9b, 0x32, 0x3f, 0xb9, 0xe1, 0xd7, 0x7e, 0x14, 0x90, 0xc4, 0x8f,
-	0x42, 0x74, 0x80, 0x8f, 0x01, 0xa2, 0x6b, 0xca, 0xf8, 0x55, 0x1a, 0x25, 0x04, 0x0d, 0xf0, 0x53,
-	0x38, 0x61, 0xf4, 0x2a, 0xa5, 0x71, 0xc2, 0x93, 0x28, 0xe2, 0x01, 0x61, 0xef, 0x29, 0x1a, 0xe2,
-	0x67, 0xf0, 0xc4, 0x25, 0x2b, 0xb2, 0xf4, 0x83, 0xa6, 0x80, 0xe7, 0xc7, 0x64, 0x19, 0x50, 0x0f,
-	0x1d, 0xe2, 0x53, 0x40, 0x97, 0x94, 0x24, 0x29, 0xa3, 0x7b, 0x77, 0xd4, 0xe0, 0x97, 0xc4, 0xe3,
-	0x5d, 0x25, 0x34, 0x6e, 0xf0, 0x8c, 0xc6, 0xab, 0x28, 0x8c, 0x69, 0xaf, 0xae, 0x85, 0x8f, 0xc0,
-	0x72, 0x49, 0xe8, 0xd2, 0xa0, 0xc9, 0x03, 0x8c, 0xc0, 0x66, 0x74, 0x15, 0x90, 0x9b, 0xae, 0xef,
-	0x49, 0xd3, 0x8f, 0x47, 0x89, 0x17, 0xf8, 0x21, 0xe5, 0xf4, 0x93, 0x4b, 0xa9, 0x47, 0x3d, 0x64,
-	0xcf, 0xfe, 0x18, 0x30, 0x66, 0x72, 0x57, 0xa9, 0x72, 0x27, 0xf1, 0x73, 0x18, 0xeb, 0x4e, 0x3b,
-	0xc6, 0xd4, 0x98, 0xdb, 0xec, 0x3e, 0xc6, 0xe7, 0x60, 0xc9, 0x1f, 0x99, 0xac, 0x9a, 0x75, 0xb5,
-	0x23, 0xb5, 0xd9, 0xde, 0xc0, 0x3e, 0x9c, 0x88, 0xfd, 0x3a, 0xb9, 0x6c, 0x06, 0xec, 0x1c, 0x4c,
-	0x8d, 0xf9, 0xe4, 0xcd, 0xf9, 0xa2, 0x77, 0x87, 0x0f, 0x77, 0xce, 0x90, 0x78, 0x78, 0x05, 0xaf,
-	0xe0, 0xf8, 0xab, 0xb8, 0x15, 0x7c, 0x4f, 0x1b, 0xb4, 0xb4, 0xa3, 0xc6, 0xa5, 0xf7, 0xc4, 0xd7,
-	0x60, 0xe9, 0x2a, 0xeb, 0x48, 0xc3, 0x96, 0x74, 0xda, 0x27, 0xdd, 0x1d, 0x07, 0x1b, 0xeb, 0x4e,
-	0x2d, 0xed, 0xcf, 0xbd, 0x07, 0xf0, 0x37, 0x00, 0x00, 0xff, 0xff, 0x38, 0xd1, 0x0f, 0x22, 0x4f,
-	0x03, 0x00, 0x00,
+var File_remote_api_proto protoreflect.FileDescriptor
+
+var file_remote_api_proto_rawDesc = []byte{
+	0x0a, 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x12, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x22, 0x91,
+	0x01, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a,
+	0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d,
+	0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x22, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64,
+	0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
+	0x69, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65,
+	0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61,
+	0x69, 0x6c, 0x22, 0xd5, 0x02, 0x0a, 0x08, 0x52, 0x70, 0x63, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12,
+	0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63,
+	0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01,
+	0x22, 0x8c, 0x02, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b,
+	0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43,
+	0x41, 0x4c, 0x4c, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12,
+	0x0f, 0x0a, 0x0b, 0x50, 0x41, 0x52, 0x53, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02,
+	0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x56, 0x49, 0x4f,
+	0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x56, 0x45, 0x52,
+	0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x51, 0x55,
+	0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x05, 0x12,
+	0x17, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x49,
+	0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x45, 0x41, 0x54,
+	0x55, 0x52, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x07, 0x12, 0x0f,
+	0x0a, 0x0b, 0x42, 0x41, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x08, 0x12,
+	0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f,
+	0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45,
+	0x4c, 0x4c, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59,
+	0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x0b, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x45, 0x41, 0x44,
+	0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x0c, 0x42,
+	0x09, 0x0a, 0x07, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xd4, 0x02, 0x0a, 0x08, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x09, 0x65,
+	0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x11, 0x61,
+	0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f,
+	0x61, 0x70, 0x69, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45,
+	0x72, 0x72, 0x6f, 0x72, 0x48, 0x02, 0x52, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6a,
+	0x61, 0x76, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
+	0x01, 0x28, 0x0c, 0x48, 0x03, 0x52, 0x0d, 0x6a, 0x61, 0x76, 0x61, 0x45, 0x78, 0x63, 0x65, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x70, 0x63, 0x5f, 0x65,
+	0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x65, 0x6d,
+	0x6f, 0x74, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x70, 0x63, 0x45, 0x72, 0x72, 0x6f, 0x72,
+	0x48, 0x04, 0x52, 0x08, 0x72, 0x70, 0x63, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42,
+	0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0c, 0x0a, 0x0a,
+	0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61,
+	0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72,
+	0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x65, 0x72, 0x72, 0x6f,
+	0x72, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
+	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
+	0x5f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_remote_api_proto_rawDescOnce sync.Once
+	file_remote_api_proto_rawDescData = file_remote_api_proto_rawDesc
+)
+
+func file_remote_api_proto_rawDescGZIP() []byte {
+	file_remote_api_proto_rawDescOnce.Do(func() {
+		file_remote_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_remote_api_proto_rawDescData)
+	})
+	return file_remote_api_proto_rawDescData
+}
+
+var file_remote_api_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_remote_api_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_remote_api_proto_goTypes = []interface{}{
+	(RpcError_ErrorCode)(0),  // 0: remote_api.RpcError.ErrorCode
+	(*Request)(nil),          // 1: remote_api.Request
+	(*ApplicationError)(nil), // 2: remote_api.ApplicationError
+	(*RpcError)(nil),         // 3: remote_api.RpcError
+	(*Response)(nil),         // 4: remote_api.Response
+}
+var file_remote_api_proto_depIdxs = []int32{
+	2, // 0: remote_api.Response.application_error:type_name -> remote_api.ApplicationError
+	3, // 1: remote_api.Response.rpc_error:type_name -> remote_api.RpcError
+	2, // [2:2] is the sub-list for method output_type
+	2, // [2:2] is the sub-list for method input_type
+	2, // [2:2] is the sub-list for extension type_name
+	2, // [2:2] is the sub-list for extension extendee
+	0, // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_remote_api_proto_init() }
+func file_remote_api_proto_init() {
+	if File_remote_api_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_remote_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Request); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_remote_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ApplicationError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_remote_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RpcError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_remote_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Response); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_remote_api_proto_msgTypes[0].OneofWrappers = []interface{}{}
+	file_remote_api_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	file_remote_api_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_remote_api_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   4,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_remote_api_proto_goTypes,
+		DependencyIndexes: file_remote_api_proto_depIdxs,
+		EnumInfos:         file_remote_api_proto_enumTypes,
+		MessageInfos:      file_remote_api_proto_msgTypes,
+	}.Build()
+	File_remote_api_proto = out.File
+	file_remote_api_proto_rawDesc = nil
+	file_remote_api_proto_goTypes = nil
+	file_remote_api_proto_depIdxs = nil
 }
diff --git a/internal/remote_api/remote_api.proto b/internal/remote_api/remote_api.proto
index f21763a4..65981d16 100644
--- a/internal/remote_api/remote_api.proto
+++ b/internal/remote_api/remote_api.proto
@@ -1,18 +1,18 @@
-syntax = "proto2";
-option go_package = "remote_api";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/remote_api";
 
 package remote_api;
 
 message Request {
-  required string service_name = 2;
-  required string method = 3;
-  required bytes request = 4;
+  string service_name = 2;
+  string method = 3;
+ bytes request = 4;
   optional string request_id = 5;
 }
 
 message ApplicationError {
-  required int32 code = 1;
-  required string detail = 2;
+ int32 code = 1;
+ string detail = 2;
 }
 
 message RpcError {
@@ -31,7 +31,7 @@ message RpcError {
     REPLAY_ERROR = 11;
     DEADLINE_EXCEEDED = 12;
   }
-  required int32 code = 1;
+ int32 code = 1;
   optional string detail = 2;
 }
 
diff --git a/internal/search/search.pb.go b/internal/search/search.pb.go
index 86a65e5b..50502ebd 100644
--- a/internal/search/search.pb.go
+++ b/internal/search/search.pb.go
@@ -1,26 +1,29 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/search/search.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: search.proto
 
 package search
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 Scope_Type int32
 
 const (
+	Scope_NONE                    Scope_Type = 0
 	Scope_USER_BY_CANONICAL_ID    Scope_Type = 1
 	Scope_USER_BY_EMAIL           Scope_Type = 2
 	Scope_GROUP_BY_CANONICAL_ID   Scope_Type = 3
@@ -30,82 +33,107 @@ const (
 	Scope_ALL_AUTHENTICATED_USERS Scope_Type = 7
 )
 
-var Scope_Type_name = map[int32]string{
-	1: "USER_BY_CANONICAL_ID",
-	2: "USER_BY_EMAIL",
-	3: "GROUP_BY_CANONICAL_ID",
-	4: "GROUP_BY_EMAIL",
-	5: "GROUP_BY_DOMAIN",
-	6: "ALL_USERS",
-	7: "ALL_AUTHENTICATED_USERS",
-}
-var Scope_Type_value = map[string]int32{
-	"USER_BY_CANONICAL_ID":    1,
-	"USER_BY_EMAIL":           2,
-	"GROUP_BY_CANONICAL_ID":   3,
-	"GROUP_BY_EMAIL":          4,
-	"GROUP_BY_DOMAIN":         5,
-	"ALL_USERS":               6,
-	"ALL_AUTHENTICATED_USERS": 7,
-}
+// Enum value maps for Scope_Type.
+var (
+	Scope_Type_name = map[int32]string{
+		0: "NONE",
+		1: "USER_BY_CANONICAL_ID",
+		2: "USER_BY_EMAIL",
+		3: "GROUP_BY_CANONICAL_ID",
+		4: "GROUP_BY_EMAIL",
+		5: "GROUP_BY_DOMAIN",
+		6: "ALL_USERS",
+		7: "ALL_AUTHENTICATED_USERS",
+	}
+	Scope_Type_value = map[string]int32{
+		"NONE":                    0,
+		"USER_BY_CANONICAL_ID":    1,
+		"USER_BY_EMAIL":           2,
+		"GROUP_BY_CANONICAL_ID":   3,
+		"GROUP_BY_EMAIL":          4,
+		"GROUP_BY_DOMAIN":         5,
+		"ALL_USERS":               6,
+		"ALL_AUTHENTICATED_USERS": 7,
+	}
+)
 
 func (x Scope_Type) Enum() *Scope_Type {
 	p := new(Scope_Type)
 	*p = x
 	return p
 }
+
 func (x Scope_Type) String() string {
-	return proto.EnumName(Scope_Type_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Scope_Type) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Scope_Type_value, data, "Scope_Type")
-	if err != nil {
-		return err
-	}
-	*x = Scope_Type(value)
-	return nil
+
+func (Scope_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[0].Descriptor()
+}
+
+func (Scope_Type) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[0]
+}
+
+func (x Scope_Type) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use Scope_Type.Descriptor instead.
 func (Scope_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{0, 0}
+	return file_search_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type Entry_Permission int32
 
 const (
+	Entry_NONE         Entry_Permission = 0
 	Entry_READ         Entry_Permission = 1
 	Entry_WRITE        Entry_Permission = 2
 	Entry_FULL_CONTROL Entry_Permission = 3
 )
 
-var Entry_Permission_name = map[int32]string{
-	1: "READ",
-	2: "WRITE",
-	3: "FULL_CONTROL",
-}
-var Entry_Permission_value = map[string]int32{
-	"READ":         1,
-	"WRITE":        2,
-	"FULL_CONTROL": 3,
-}
+// Enum value maps for Entry_Permission.
+var (
+	Entry_Permission_name = map[int32]string{
+		0: "NONE",
+		1: "READ",
+		2: "WRITE",
+		3: "FULL_CONTROL",
+	}
+	Entry_Permission_value = map[string]int32{
+		"NONE":         0,
+		"READ":         1,
+		"WRITE":        2,
+		"FULL_CONTROL": 3,
+	}
+)
 
 func (x Entry_Permission) Enum() *Entry_Permission {
 	p := new(Entry_Permission)
 	*p = x
 	return p
 }
+
 func (x Entry_Permission) String() string {
-	return proto.EnumName(Entry_Permission_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Entry_Permission) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Entry_Permission_value, data, "Entry_Permission")
-	if err != nil {
-		return err
-	}
-	*x = Entry_Permission(value)
-	return nil
+
+func (Entry_Permission) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[1].Descriptor()
+}
+
+func (Entry_Permission) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[1]
+}
+
+func (x Entry_Permission) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use Entry_Permission.Descriptor instead.
 func (Entry_Permission) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{1, 0}
+	return file_search_proto_rawDescGZIP(), []int{1, 0}
 }
 
 type FieldValue_ContentType int32
@@ -119,77 +147,100 @@ const (
 	FieldValue_GEO    FieldValue_ContentType = 5
 )
 
-var FieldValue_ContentType_name = map[int32]string{
-	0: "TEXT",
-	1: "HTML",
-	2: "ATOM",
-	3: "DATE",
-	4: "NUMBER",
-	5: "GEO",
-}
-var FieldValue_ContentType_value = map[string]int32{
-	"TEXT":   0,
-	"HTML":   1,
-	"ATOM":   2,
-	"DATE":   3,
-	"NUMBER": 4,
-	"GEO":    5,
-}
+// Enum value maps for FieldValue_ContentType.
+var (
+	FieldValue_ContentType_name = map[int32]string{
+		0: "TEXT",
+		1: "HTML",
+		2: "ATOM",
+		3: "DATE",
+		4: "NUMBER",
+		5: "GEO",
+	}
+	FieldValue_ContentType_value = map[string]int32{
+		"TEXT":   0,
+		"HTML":   1,
+		"ATOM":   2,
+		"DATE":   3,
+		"NUMBER": 4,
+		"GEO":    5,
+	}
+)
 
 func (x FieldValue_ContentType) Enum() *FieldValue_ContentType {
 	p := new(FieldValue_ContentType)
 	*p = x
 	return p
 }
+
 func (x FieldValue_ContentType) String() string {
-	return proto.EnumName(FieldValue_ContentType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *FieldValue_ContentType) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(FieldValue_ContentType_value, data, "FieldValue_ContentType")
-	if err != nil {
-		return err
-	}
-	*x = FieldValue_ContentType(value)
-	return nil
+
+func (FieldValue_ContentType) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[2].Descriptor()
+}
+
+func (FieldValue_ContentType) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[2]
 }
+
+func (x FieldValue_ContentType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use FieldValue_ContentType.Descriptor instead.
 func (FieldValue_ContentType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{3, 0}
+	return file_search_proto_rawDescGZIP(), []int{3, 0}
 }
 
 type FacetValue_ContentType int32
 
 const (
+	FacetValue_NONE   FacetValue_ContentType = 0
 	FacetValue_ATOM   FacetValue_ContentType = 2
 	FacetValue_NUMBER FacetValue_ContentType = 4
 )
 
-var FacetValue_ContentType_name = map[int32]string{
-	2: "ATOM",
-	4: "NUMBER",
-}
-var FacetValue_ContentType_value = map[string]int32{
-	"ATOM":   2,
-	"NUMBER": 4,
-}
+// Enum value maps for FacetValue_ContentType.
+var (
+	FacetValue_ContentType_name = map[int32]string{
+		0: "NONE",
+		2: "ATOM",
+		4: "NUMBER",
+	}
+	FacetValue_ContentType_value = map[string]int32{
+		"NONE":   0,
+		"ATOM":   2,
+		"NUMBER": 4,
+	}
+)
 
 func (x FacetValue_ContentType) Enum() *FacetValue_ContentType {
 	p := new(FacetValue_ContentType)
 	*p = x
 	return p
 }
+
 func (x FacetValue_ContentType) String() string {
-	return proto.EnumName(FacetValue_ContentType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *FacetValue_ContentType) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(FacetValue_ContentType_value, data, "FacetValue_ContentType")
-	if err != nil {
-		return err
-	}
-	*x = FacetValue_ContentType(value)
-	return nil
+
+func (FacetValue_ContentType) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[3].Descriptor()
+}
+
+func (FacetValue_ContentType) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[3]
+}
+
+func (x FacetValue_ContentType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use FacetValue_ContentType.Descriptor instead.
 func (FacetValue_ContentType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{7, 0}
+	return file_search_proto_rawDescGZIP(), []int{7, 0}
 }
 
 type Document_OrderIdSource int32
@@ -199,33 +250,43 @@ const (
 	Document_SUPPLIED  Document_OrderIdSource = 1
 )
 
-var Document_OrderIdSource_name = map[int32]string{
-	0: "DEFAULTED",
-	1: "SUPPLIED",
-}
-var Document_OrderIdSource_value = map[string]int32{
-	"DEFAULTED": 0,
-	"SUPPLIED":  1,
-}
+// Enum value maps for Document_OrderIdSource.
+var (
+	Document_OrderIdSource_name = map[int32]string{
+		0: "DEFAULTED",
+		1: "SUPPLIED",
+	}
+	Document_OrderIdSource_value = map[string]int32{
+		"DEFAULTED": 0,
+		"SUPPLIED":  1,
+	}
+)
 
 func (x Document_OrderIdSource) Enum() *Document_OrderIdSource {
 	p := new(Document_OrderIdSource)
 	*p = x
 	return p
 }
+
 func (x Document_OrderIdSource) String() string {
-	return proto.EnumName(Document_OrderIdSource_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Document_OrderIdSource) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Document_OrderIdSource_value, data, "Document_OrderIdSource")
-	if err != nil {
-		return err
-	}
-	*x = Document_OrderIdSource(value)
-	return nil
+
+func (Document_OrderIdSource) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[4].Descriptor()
+}
+
+func (Document_OrderIdSource) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[4]
 }
+
+func (x Document_OrderIdSource) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Document_OrderIdSource.Descriptor instead.
 func (Document_OrderIdSource) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{10, 0}
+	return file_search_proto_rawDescGZIP(), []int{10, 0}
 }
 
 type Document_Storage int32
@@ -234,31 +295,41 @@ const (
 	Document_DISK Document_Storage = 0
 )
 
-var Document_Storage_name = map[int32]string{
-	0: "DISK",
-}
-var Document_Storage_value = map[string]int32{
-	"DISK": 0,
-}
+// Enum value maps for Document_Storage.
+var (
+	Document_Storage_name = map[int32]string{
+		0: "DISK",
+	}
+	Document_Storage_value = map[string]int32{
+		"DISK": 0,
+	}
+)
 
 func (x Document_Storage) Enum() *Document_Storage {
 	p := new(Document_Storage)
 	*p = x
 	return p
 }
+
 func (x Document_Storage) String() string {
-	return proto.EnumName(Document_Storage_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *Document_Storage) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Document_Storage_value, data, "Document_Storage")
-	if err != nil {
-		return err
-	}
-	*x = Document_Storage(value)
-	return nil
+
+func (Document_Storage) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[5].Descriptor()
 }
+
+func (Document_Storage) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[5]
+}
+
+func (x Document_Storage) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Document_Storage.Descriptor instead.
 func (Document_Storage) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{10, 1}
+	return file_search_proto_rawDescGZIP(), []int{10, 1}
 }
 
 type SearchServiceError_ErrorCode int32
@@ -273,43 +344,53 @@ const (
 	SearchServiceError_CONCURRENT_TRANSACTION SearchServiceError_ErrorCode = 6
 )
 
-var SearchServiceError_ErrorCode_name = map[int32]string{
-	0: "OK",
-	1: "INVALID_REQUEST",
-	2: "TRANSIENT_ERROR",
-	3: "INTERNAL_ERROR",
-	4: "PERMISSION_DENIED",
-	5: "TIMEOUT",
-	6: "CONCURRENT_TRANSACTION",
-}
-var SearchServiceError_ErrorCode_value = map[string]int32{
-	"OK":                     0,
-	"INVALID_REQUEST":        1,
-	"TRANSIENT_ERROR":        2,
-	"INTERNAL_ERROR":         3,
-	"PERMISSION_DENIED":      4,
-	"TIMEOUT":                5,
-	"CONCURRENT_TRANSACTION": 6,
-}
+// Enum value maps for SearchServiceError_ErrorCode.
+var (
+	SearchServiceError_ErrorCode_name = map[int32]string{
+		0: "OK",
+		1: "INVALID_REQUEST",
+		2: "TRANSIENT_ERROR",
+		3: "INTERNAL_ERROR",
+		4: "PERMISSION_DENIED",
+		5: "TIMEOUT",
+		6: "CONCURRENT_TRANSACTION",
+	}
+	SearchServiceError_ErrorCode_value = map[string]int32{
+		"OK":                     0,
+		"INVALID_REQUEST":        1,
+		"TRANSIENT_ERROR":        2,
+		"INTERNAL_ERROR":         3,
+		"PERMISSION_DENIED":      4,
+		"TIMEOUT":                5,
+		"CONCURRENT_TRANSACTION": 6,
+	}
+)
 
 func (x SearchServiceError_ErrorCode) Enum() *SearchServiceError_ErrorCode {
 	p := new(SearchServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x SearchServiceError_ErrorCode) String() string {
-	return proto.EnumName(SearchServiceError_ErrorCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *SearchServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SearchServiceError_ErrorCode_value, data, "SearchServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = SearchServiceError_ErrorCode(value)
-	return nil
+
+func (SearchServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[6].Descriptor()
+}
+
+func (SearchServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[6]
+}
+
+func (x SearchServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use SearchServiceError_ErrorCode.Descriptor instead.
 func (SearchServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{11, 0}
+	return file_search_proto_rawDescGZIP(), []int{11, 0}
 }
 
 type IndexSpec_Consistency int32
@@ -319,33 +400,43 @@ const (
 	IndexSpec_PER_DOCUMENT IndexSpec_Consistency = 1
 )
 
-var IndexSpec_Consistency_name = map[int32]string{
-	0: "GLOBAL",
-	1: "PER_DOCUMENT",
-}
-var IndexSpec_Consistency_value = map[string]int32{
-	"GLOBAL":       0,
-	"PER_DOCUMENT": 1,
-}
+// Enum value maps for IndexSpec_Consistency.
+var (
+	IndexSpec_Consistency_name = map[int32]string{
+		0: "GLOBAL",
+		1: "PER_DOCUMENT",
+	}
+	IndexSpec_Consistency_value = map[string]int32{
+		"GLOBAL":       0,
+		"PER_DOCUMENT": 1,
+	}
+)
 
 func (x IndexSpec_Consistency) Enum() *IndexSpec_Consistency {
 	p := new(IndexSpec_Consistency)
 	*p = x
 	return p
 }
+
 func (x IndexSpec_Consistency) String() string {
-	return proto.EnumName(IndexSpec_Consistency_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *IndexSpec_Consistency) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(IndexSpec_Consistency_value, data, "IndexSpec_Consistency")
-	if err != nil {
-		return err
-	}
-	*x = IndexSpec_Consistency(value)
-	return nil
+
+func (IndexSpec_Consistency) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[7].Descriptor()
+}
+
+func (IndexSpec_Consistency) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[7]
 }
+
+func (x IndexSpec_Consistency) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use IndexSpec_Consistency.Descriptor instead.
 func (IndexSpec_Consistency) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{13, 0}
+	return file_search_proto_rawDescGZIP(), []int{13, 0}
 }
 
 type IndexSpec_Source int32
@@ -356,35 +447,45 @@ const (
 	IndexSpec_CLOUD_STORAGE IndexSpec_Source = 2
 )
 
-var IndexSpec_Source_name = map[int32]string{
-	0: "SEARCH",
-	1: "DATASTORE",
-	2: "CLOUD_STORAGE",
-}
-var IndexSpec_Source_value = map[string]int32{
-	"SEARCH":        0,
-	"DATASTORE":     1,
-	"CLOUD_STORAGE": 2,
-}
+// Enum value maps for IndexSpec_Source.
+var (
+	IndexSpec_Source_name = map[int32]string{
+		0: "SEARCH",
+		1: "DATASTORE",
+		2: "CLOUD_STORAGE",
+	}
+	IndexSpec_Source_value = map[string]int32{
+		"SEARCH":        0,
+		"DATASTORE":     1,
+		"CLOUD_STORAGE": 2,
+	}
+)
 
 func (x IndexSpec_Source) Enum() *IndexSpec_Source {
 	p := new(IndexSpec_Source)
 	*p = x
 	return p
 }
+
 func (x IndexSpec_Source) String() string {
-	return proto.EnumName(IndexSpec_Source_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *IndexSpec_Source) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(IndexSpec_Source_value, data, "IndexSpec_Source")
-	if err != nil {
-		return err
-	}
-	*x = IndexSpec_Source(value)
-	return nil
+
+func (IndexSpec_Source) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[8].Descriptor()
 }
+
+func (IndexSpec_Source) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[8]
+}
+
+func (x IndexSpec_Source) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use IndexSpec_Source.Descriptor instead.
 func (IndexSpec_Source) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{13, 1}
+	return file_search_proto_rawDescGZIP(), []int{13, 1}
 }
 
 type IndexSpec_Mode int32
@@ -394,33 +495,43 @@ const (
 	IndexSpec_BACKGROUND IndexSpec_Mode = 1
 )
 
-var IndexSpec_Mode_name = map[int32]string{
-	0: "PRIORITY",
-	1: "BACKGROUND",
-}
-var IndexSpec_Mode_value = map[string]int32{
-	"PRIORITY":   0,
-	"BACKGROUND": 1,
-}
+// Enum value maps for IndexSpec_Mode.
+var (
+	IndexSpec_Mode_name = map[int32]string{
+		0: "PRIORITY",
+		1: "BACKGROUND",
+	}
+	IndexSpec_Mode_value = map[string]int32{
+		"PRIORITY":   0,
+		"BACKGROUND": 1,
+	}
+)
 
 func (x IndexSpec_Mode) Enum() *IndexSpec_Mode {
 	p := new(IndexSpec_Mode)
 	*p = x
 	return p
 }
+
 func (x IndexSpec_Mode) String() string {
-	return proto.EnumName(IndexSpec_Mode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *IndexSpec_Mode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(IndexSpec_Mode_value, data, "IndexSpec_Mode")
-	if err != nil {
-		return err
-	}
-	*x = IndexSpec_Mode(value)
-	return nil
+
+func (IndexSpec_Mode) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[9].Descriptor()
+}
+
+func (IndexSpec_Mode) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[9]
 }
+
+func (x IndexSpec_Mode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use IndexSpec_Mode.Descriptor instead.
 func (IndexSpec_Mode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{13, 2}
+	return file_search_proto_rawDescGZIP(), []int{13, 2}
 }
 
 type IndexDocumentParams_Freshness int32
@@ -430,33 +541,43 @@ const (
 	IndexDocumentParams_WHEN_CONVENIENT IndexDocumentParams_Freshness = 1
 )
 
-var IndexDocumentParams_Freshness_name = map[int32]string{
-	0: "SYNCHRONOUSLY",
-	1: "WHEN_CONVENIENT",
-}
-var IndexDocumentParams_Freshness_value = map[string]int32{
-	"SYNCHRONOUSLY":   0,
-	"WHEN_CONVENIENT": 1,
-}
+// Enum value maps for IndexDocumentParams_Freshness.
+var (
+	IndexDocumentParams_Freshness_name = map[int32]string{
+		0: "SYNCHRONOUSLY",
+		1: "WHEN_CONVENIENT",
+	}
+	IndexDocumentParams_Freshness_value = map[string]int32{
+		"SYNCHRONOUSLY":   0,
+		"WHEN_CONVENIENT": 1,
+	}
+)
 
 func (x IndexDocumentParams_Freshness) Enum() *IndexDocumentParams_Freshness {
 	p := new(IndexDocumentParams_Freshness)
 	*p = x
 	return p
 }
+
 func (x IndexDocumentParams_Freshness) String() string {
-	return proto.EnumName(IndexDocumentParams_Freshness_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *IndexDocumentParams_Freshness) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(IndexDocumentParams_Freshness_value, data, "IndexDocumentParams_Freshness")
-	if err != nil {
-		return err
-	}
-	*x = IndexDocumentParams_Freshness(value)
-	return nil
+
+func (IndexDocumentParams_Freshness) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[10].Descriptor()
+}
+
+func (IndexDocumentParams_Freshness) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[10]
+}
+
+func (x IndexDocumentParams_Freshness) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use IndexDocumentParams_Freshness.Descriptor instead.
 func (IndexDocumentParams_Freshness) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{15, 0}
+	return file_search_proto_rawDescGZIP(), []int{15, 0}
 }
 
 type ScorerSpec_Scorer int32
@@ -466,33 +587,43 @@ const (
 	ScorerSpec_MATCH_SCORER           ScorerSpec_Scorer = 2
 )
 
-var ScorerSpec_Scorer_name = map[int32]string{
-	0: "RESCORING_MATCH_SCORER",
-	2: "MATCH_SCORER",
-}
-var ScorerSpec_Scorer_value = map[string]int32{
-	"RESCORING_MATCH_SCORER": 0,
-	"MATCH_SCORER":           2,
-}
+// Enum value maps for ScorerSpec_Scorer.
+var (
+	ScorerSpec_Scorer_name = map[int32]string{
+		0: "RESCORING_MATCH_SCORER",
+		2: "MATCH_SCORER",
+	}
+	ScorerSpec_Scorer_value = map[string]int32{
+		"RESCORING_MATCH_SCORER": 0,
+		"MATCH_SCORER":           2,
+	}
+)
 
 func (x ScorerSpec_Scorer) Enum() *ScorerSpec_Scorer {
 	p := new(ScorerSpec_Scorer)
 	*p = x
 	return p
 }
+
 func (x ScorerSpec_Scorer) String() string {
-	return proto.EnumName(ScorerSpec_Scorer_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *ScorerSpec_Scorer) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(ScorerSpec_Scorer_value, data, "ScorerSpec_Scorer")
-	if err != nil {
-		return err
-	}
-	*x = ScorerSpec_Scorer(value)
-	return nil
+
+func (ScorerSpec_Scorer) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[11].Descriptor()
+}
+
+func (ScorerSpec_Scorer) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[11]
 }
+
+func (x ScorerSpec_Scorer) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ScorerSpec_Scorer.Descriptor instead.
 func (ScorerSpec_Scorer) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{31, 0}
+	return file_search_proto_rawDescGZIP(), []int{31, 0}
 }
 
 type SearchParams_CursorType int32
@@ -503,35 +634,45 @@ const (
 	SearchParams_PER_RESULT SearchParams_CursorType = 2
 )
 
-var SearchParams_CursorType_name = map[int32]string{
-	0: "NONE",
-	1: "SINGLE",
-	2: "PER_RESULT",
-}
-var SearchParams_CursorType_value = map[string]int32{
-	"NONE":       0,
-	"SINGLE":     1,
-	"PER_RESULT": 2,
-}
+// Enum value maps for SearchParams_CursorType.
+var (
+	SearchParams_CursorType_name = map[int32]string{
+		0: "NONE",
+		1: "SINGLE",
+		2: "PER_RESULT",
+	}
+	SearchParams_CursorType_value = map[string]int32{
+		"NONE":       0,
+		"SINGLE":     1,
+		"PER_RESULT": 2,
+	}
+)
 
 func (x SearchParams_CursorType) Enum() *SearchParams_CursorType {
 	p := new(SearchParams_CursorType)
 	*p = x
 	return p
 }
+
 func (x SearchParams_CursorType) String() string {
-	return proto.EnumName(SearchParams_CursorType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *SearchParams_CursorType) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SearchParams_CursorType_value, data, "SearchParams_CursorType")
-	if err != nil {
-		return err
-	}
-	*x = SearchParams_CursorType(value)
-	return nil
+
+func (SearchParams_CursorType) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[12].Descriptor()
 }
+
+func (SearchParams_CursorType) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[12]
+}
+
+func (x SearchParams_CursorType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SearchParams_CursorType.Descriptor instead.
 func (SearchParams_CursorType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{38, 0}
+	return file_search_proto_rawDescGZIP(), []int{38, 0}
 }
 
 type SearchParams_ParsingMode int32
@@ -541,2919 +682,4422 @@ const (
 	SearchParams_RELAXED SearchParams_ParsingMode = 1
 )
 
-var SearchParams_ParsingMode_name = map[int32]string{
-	0: "STRICT",
-	1: "RELAXED",
-}
-var SearchParams_ParsingMode_value = map[string]int32{
-	"STRICT":  0,
-	"RELAXED": 1,
-}
+// Enum value maps for SearchParams_ParsingMode.
+var (
+	SearchParams_ParsingMode_name = map[int32]string{
+		0: "STRICT",
+		1: "RELAXED",
+	}
+	SearchParams_ParsingMode_value = map[string]int32{
+		"STRICT":  0,
+		"RELAXED": 1,
+	}
+)
 
 func (x SearchParams_ParsingMode) Enum() *SearchParams_ParsingMode {
 	p := new(SearchParams_ParsingMode)
 	*p = x
 	return p
 }
+
 func (x SearchParams_ParsingMode) String() string {
-	return proto.EnumName(SearchParams_ParsingMode_name, int32(x))
-}
-func (x *SearchParams_ParsingMode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SearchParams_ParsingMode_value, data, "SearchParams_ParsingMode")
-	if err != nil {
-		return err
-	}
-	*x = SearchParams_ParsingMode(value)
-	return nil
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (SearchParams_ParsingMode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{38, 1}
+
+func (SearchParams_ParsingMode) Descriptor() protoreflect.EnumDescriptor {
+	return file_search_proto_enumTypes[13].Descriptor()
 }
 
-type Scope struct {
-	Type                 *Scope_Type `protobuf:"varint,1,opt,name=type,enum=search.Scope_Type" json:"type,omitempty"`
-	Value                *string     `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+func (SearchParams_ParsingMode) Type() protoreflect.EnumType {
+	return &file_search_proto_enumTypes[13]
 }
 
-func (m *Scope) Reset()         { *m = Scope{} }
-func (m *Scope) String() string { return proto.CompactTextString(m) }
-func (*Scope) ProtoMessage()    {}
-func (*Scope) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{0}
+func (x SearchParams_ParsingMode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *Scope) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Scope.Unmarshal(m, b)
+
+// Deprecated: Use SearchParams_ParsingMode.Descriptor instead.
+func (SearchParams_ParsingMode) EnumDescriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{38, 1}
 }
-func (m *Scope) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Scope.Marshal(b, m, deterministic)
+
+type Scope struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Type  *Scope_Type `protobuf:"varint,1,opt,name=type,proto3,enum=search.Scope_Type,oneof" json:"type,omitempty"`
+	Value *string     `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"`
 }
-func (dst *Scope) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Scope.Merge(dst, src)
+
+func (x *Scope) Reset() {
+	*x = Scope{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Scope) XXX_Size() int {
-	return xxx_messageInfo_Scope.Size(m)
+
+func (x *Scope) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Scope) XXX_DiscardUnknown() {
-	xxx_messageInfo_Scope.DiscardUnknown(m)
+
+func (*Scope) ProtoMessage() {}
+
+func (x *Scope) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_Scope proto.InternalMessageInfo
+// Deprecated: Use Scope.ProtoReflect.Descriptor instead.
+func (*Scope) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{0}
+}
 
-func (m *Scope) GetType() Scope_Type {
-	if m != nil && m.Type != nil {
-		return *m.Type
+func (x *Scope) GetType() Scope_Type {
+	if x != nil && x.Type != nil {
+		return *x.Type
 	}
-	return Scope_USER_BY_CANONICAL_ID
+	return Scope_NONE
 }
 
-func (m *Scope) GetValue() string {
-	if m != nil && m.Value != nil {
-		return *m.Value
+func (x *Scope) GetValue() string {
+	if x != nil && x.Value != nil {
+		return *x.Value
 	}
 	return ""
 }
 
 type Entry struct {
-	Scope                *Scope            `protobuf:"bytes,1,opt,name=scope" json:"scope,omitempty"`
-	Permission           *Entry_Permission `protobuf:"varint,2,opt,name=permission,enum=search.Entry_Permission" json:"permission,omitempty"`
-	DisplayName          *string           `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Entry) Reset()         { *m = Entry{} }
-func (m *Entry) String() string { return proto.CompactTextString(m) }
-func (*Entry) ProtoMessage()    {}
-func (*Entry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{1}
-}
-func (m *Entry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Entry.Unmarshal(m, b)
+	Scope       *Scope            `protobuf:"bytes,1,opt,name=scope,proto3,oneof" json:"scope,omitempty"`
+	Permission  *Entry_Permission `protobuf:"varint,2,opt,name=permission,proto3,enum=search.Entry_Permission,oneof" json:"permission,omitempty"`
+	DisplayName *string           `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3,oneof" json:"display_name,omitempty"`
 }
-func (m *Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Entry.Marshal(b, m, deterministic)
-}
-func (dst *Entry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Entry.Merge(dst, src)
+
+func (x *Entry) Reset() {
+	*x = Entry{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Entry) XXX_Size() int {
-	return xxx_messageInfo_Entry.Size(m)
+
+func (x *Entry) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Entry) XXX_DiscardUnknown() {
-	xxx_messageInfo_Entry.DiscardUnknown(m)
+
+func (*Entry) ProtoMessage() {}
+
+func (x *Entry) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_Entry proto.InternalMessageInfo
+// Deprecated: Use Entry.ProtoReflect.Descriptor instead.
+func (*Entry) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *Entry) GetScope() *Scope {
-	if m != nil {
-		return m.Scope
+func (x *Entry) GetScope() *Scope {
+	if x != nil {
+		return x.Scope
 	}
 	return nil
 }
 
-func (m *Entry) GetPermission() Entry_Permission {
-	if m != nil && m.Permission != nil {
-		return *m.Permission
+func (x *Entry) GetPermission() Entry_Permission {
+	if x != nil && x.Permission != nil {
+		return *x.Permission
 	}
-	return Entry_READ
+	return Entry_NONE
 }
 
-func (m *Entry) GetDisplayName() string {
-	if m != nil && m.DisplayName != nil {
-		return *m.DisplayName
+func (x *Entry) GetDisplayName() string {
+	if x != nil && x.DisplayName != nil {
+		return *x.DisplayName
 	}
 	return ""
 }
 
 type AccessControlList struct {
-	Owner                *string  `protobuf:"bytes,1,opt,name=owner" json:"owner,omitempty"`
-	Entries              []*Entry `protobuf:"bytes,2,rep,name=entries" json:"entries,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *AccessControlList) Reset()         { *m = AccessControlList{} }
-func (m *AccessControlList) String() string { return proto.CompactTextString(m) }
-func (*AccessControlList) ProtoMessage()    {}
-func (*AccessControlList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{2}
-}
-func (m *AccessControlList) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AccessControlList.Unmarshal(m, b)
+	Owner   *string  `protobuf:"bytes,1,opt,name=owner,proto3,oneof" json:"owner,omitempty"`
+	Entries []*Entry `protobuf:"bytes,2,rep,name=entries,proto3" json:"entries,omitempty"`
 }
-func (m *AccessControlList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AccessControlList.Marshal(b, m, deterministic)
-}
-func (dst *AccessControlList) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AccessControlList.Merge(dst, src)
+
+func (x *AccessControlList) Reset() {
+	*x = AccessControlList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AccessControlList) XXX_Size() int {
-	return xxx_messageInfo_AccessControlList.Size(m)
+
+func (x *AccessControlList) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AccessControlList) XXX_DiscardUnknown() {
-	xxx_messageInfo_AccessControlList.DiscardUnknown(m)
+
+func (*AccessControlList) ProtoMessage() {}
+
+func (x *AccessControlList) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_AccessControlList proto.InternalMessageInfo
+// Deprecated: Use AccessControlList.ProtoReflect.Descriptor instead.
+func (*AccessControlList) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *AccessControlList) GetOwner() string {
-	if m != nil && m.Owner != nil {
-		return *m.Owner
+func (x *AccessControlList) GetOwner() string {
+	if x != nil && x.Owner != nil {
+		return *x.Owner
 	}
 	return ""
 }
 
-func (m *AccessControlList) GetEntries() []*Entry {
-	if m != nil {
-		return m.Entries
+func (x *AccessControlList) GetEntries() []*Entry {
+	if x != nil {
+		return x.Entries
 	}
 	return nil
 }
 
 type FieldValue struct {
-	Type                 *FieldValue_ContentType `protobuf:"varint,1,opt,name=type,enum=search.FieldValue_ContentType,def=0" json:"type,omitempty"`
-	Language             *string                 `protobuf:"bytes,2,opt,name=language,def=en" json:"language,omitempty"`
-	StringValue          *string                 `protobuf:"bytes,3,opt,name=string_value,json=stringValue" json:"string_value,omitempty"`
-	Geo                  *FieldValue_Geo         `protobuf:"group,4,opt,name=Geo,json=geo" json:"geo,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
-}
-
-func (m *FieldValue) Reset()         { *m = FieldValue{} }
-func (m *FieldValue) String() string { return proto.CompactTextString(m) }
-func (*FieldValue) ProtoMessage()    {}
-func (*FieldValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{3}
-}
-func (m *FieldValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldValue.Unmarshal(m, b)
-}
-func (m *FieldValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldValue.Marshal(b, m, deterministic)
-}
-func (dst *FieldValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldValue.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Type        *FieldValue_ContentType `protobuf:"varint,1,opt,name=type,proto3,enum=search.FieldValue_ContentType,oneof" json:"type,omitempty"`
+	Language    *string                 `protobuf:"bytes,2,opt,name=language,proto3,oneof" json:"language,omitempty"`
+	StringValue *string                 `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof" json:"string_value,omitempty"`
+	Geo         *FieldValue_GeoType     `protobuf:"bytes,4,opt,name=Geo,proto3,oneof" json:"Geo,omitempty"`
 }
-func (m *FieldValue) XXX_Size() int {
-	return xxx_messageInfo_FieldValue.Size(m)
+
+func (x *FieldValue) Reset() {
+	*x = FieldValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FieldValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldValue.DiscardUnknown(m)
+
+func (x *FieldValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_FieldValue proto.InternalMessageInfo
+func (*FieldValue) ProtoMessage() {}
+
+func (x *FieldValue) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
+}
 
-const Default_FieldValue_Type FieldValue_ContentType = FieldValue_TEXT
-const Default_FieldValue_Language string = "en"
+// Deprecated: Use FieldValue.ProtoReflect.Descriptor instead.
+func (*FieldValue) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *FieldValue) GetType() FieldValue_ContentType {
-	if m != nil && m.Type != nil {
-		return *m.Type
+func (x *FieldValue) GetType() FieldValue_ContentType {
+	if x != nil && x.Type != nil {
+		return *x.Type
 	}
-	return Default_FieldValue_Type
+	return FieldValue_TEXT
 }
 
-func (m *FieldValue) GetLanguage() string {
-	if m != nil && m.Language != nil {
-		return *m.Language
+func (x *FieldValue) GetLanguage() string {
+	if x != nil && x.Language != nil {
+		return *x.Language
 	}
-	return Default_FieldValue_Language
+	return ""
 }
 
-func (m *FieldValue) GetStringValue() string {
-	if m != nil && m.StringValue != nil {
-		return *m.StringValue
+func (x *FieldValue) GetStringValue() string {
+	if x != nil && x.StringValue != nil {
+		return *x.StringValue
 	}
 	return ""
 }
 
-func (m *FieldValue) GetGeo() *FieldValue_Geo {
-	if m != nil {
-		return m.Geo
+func (x *FieldValue) GetGeo() *FieldValue_GeoType {
+	if x != nil {
+		return x.Geo
 	}
 	return nil
 }
 
-type FieldValue_Geo struct {
-	Lat                  *float64 `protobuf:"fixed64,5,req,name=lat" json:"lat,omitempty"`
-	Lng                  *float64 `protobuf:"fixed64,6,req,name=lng" json:"lng,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type Field struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FieldValue_Geo) Reset()         { *m = FieldValue_Geo{} }
-func (m *FieldValue_Geo) String() string { return proto.CompactTextString(m) }
-func (*FieldValue_Geo) ProtoMessage()    {}
-func (*FieldValue_Geo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{3, 0}
-}
-func (m *FieldValue_Geo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldValue_Geo.Unmarshal(m, b)
+	Name  string      `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Value *FieldValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (m *FieldValue_Geo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldValue_Geo.Marshal(b, m, deterministic)
-}
-func (dst *FieldValue_Geo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldValue_Geo.Merge(dst, src)
-}
-func (m *FieldValue_Geo) XXX_Size() int {
-	return xxx_messageInfo_FieldValue_Geo.Size(m)
+
+func (x *Field) Reset() {
+	*x = Field{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FieldValue_Geo) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldValue_Geo.DiscardUnknown(m)
+
+func (x *Field) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_FieldValue_Geo proto.InternalMessageInfo
+func (*Field) ProtoMessage() {}
 
-func (m *FieldValue_Geo) GetLat() float64 {
-	if m != nil && m.Lat != nil {
-		return *m.Lat
+func (x *Field) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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 0
+	return mi.MessageOf(x)
 }
 
-func (m *FieldValue_Geo) GetLng() float64 {
-	if m != nil && m.Lng != nil {
-		return *m.Lng
-	}
-	return 0
-}
-
-type Field struct {
-	Name                 *string     `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	Value                *FieldValue `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
-}
-
-func (m *Field) Reset()         { *m = Field{} }
-func (m *Field) String() string { return proto.CompactTextString(m) }
-func (*Field) ProtoMessage()    {}
+// Deprecated: Use Field.ProtoReflect.Descriptor instead.
 func (*Field) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{4}
-}
-func (m *Field) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Field.Unmarshal(m, b)
-}
-func (m *Field) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Field.Marshal(b, m, deterministic)
-}
-func (dst *Field) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Field.Merge(dst, src)
-}
-func (m *Field) XXX_Size() int {
-	return xxx_messageInfo_Field.Size(m)
-}
-func (m *Field) XXX_DiscardUnknown() {
-	xxx_messageInfo_Field.DiscardUnknown(m)
+	return file_search_proto_rawDescGZIP(), []int{4}
 }
 
-var xxx_messageInfo_Field proto.InternalMessageInfo
-
-func (m *Field) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *Field) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *Field) GetValue() *FieldValue {
-	if m != nil {
-		return m.Value
+func (x *Field) GetValue() *FieldValue {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
 type FieldTypes struct {
-	Name                 *string                  `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	Type                 []FieldValue_ContentType `protobuf:"varint,2,rep,name=type,enum=search.FieldValue_ContentType" json:"type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FieldTypes) Reset()         { *m = FieldTypes{} }
-func (m *FieldTypes) String() string { return proto.CompactTextString(m) }
-func (*FieldTypes) ProtoMessage()    {}
-func (*FieldTypes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{5}
-}
-func (m *FieldTypes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldTypes.Unmarshal(m, b)
+	Name string                   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Type []FieldValue_ContentType `protobuf:"varint,2,rep,packed,name=type,proto3,enum=search.FieldValue_ContentType" json:"type,omitempty"`
 }
-func (m *FieldTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldTypes.Marshal(b, m, deterministic)
-}
-func (dst *FieldTypes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldTypes.Merge(dst, src)
+
+func (x *FieldTypes) Reset() {
+	*x = FieldTypes{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FieldTypes) XXX_Size() int {
-	return xxx_messageInfo_FieldTypes.Size(m)
+
+func (x *FieldTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *FieldTypes) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldTypes.DiscardUnknown(m)
+
+func (*FieldTypes) ProtoMessage() {}
+
+func (x *FieldTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_FieldTypes proto.InternalMessageInfo
+// Deprecated: Use FieldTypes.ProtoReflect.Descriptor instead.
+func (*FieldTypes) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *FieldTypes) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *FieldTypes) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *FieldTypes) GetType() []FieldValue_ContentType {
-	if m != nil {
-		return m.Type
+func (x *FieldTypes) GetType() []FieldValue_ContentType {
+	if x != nil {
+		return x.Type
 	}
 	return nil
 }
 
 type IndexShardSettings struct {
-	PrevNumShards            []int32  `protobuf:"varint,1,rep,name=prev_num_shards,json=prevNumShards" json:"prev_num_shards,omitempty"`
-	NumShards                *int32   `protobuf:"varint,2,req,name=num_shards,json=numShards,def=1" json:"num_shards,omitempty"`
-	PrevNumShardsSearchFalse []int32  `protobuf:"varint,3,rep,name=prev_num_shards_search_false,json=prevNumShardsSearchFalse" json:"prev_num_shards_search_false,omitempty"`
-	LocalReplica             *string  `protobuf:"bytes,4,opt,name=local_replica,json=localReplica,def=" json:"local_replica,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{} `json:"-"`
-	XXX_unrecognized         []byte   `json:"-"`
-	XXX_sizecache            int32    `json:"-"`
-}
-
-func (m *IndexShardSettings) Reset()         { *m = IndexShardSettings{} }
-func (m *IndexShardSettings) String() string { return proto.CompactTextString(m) }
-func (*IndexShardSettings) ProtoMessage()    {}
-func (*IndexShardSettings) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{6}
-}
-func (m *IndexShardSettings) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndexShardSettings.Unmarshal(m, b)
-}
-func (m *IndexShardSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndexShardSettings.Marshal(b, m, deterministic)
-}
-func (dst *IndexShardSettings) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexShardSettings.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	PrevNumShards            []int32 `protobuf:"varint,1,rep,packed,name=prev_num_shards,json=prevNumShards,proto3" json:"prev_num_shards,omitempty"`
+	NumShards                int32   `protobuf:"varint,2,opt,name=num_shards,json=numShards,proto3" json:"num_shards,omitempty"`
+	PrevNumShardsSearchFalse []int32 `protobuf:"varint,3,rep,packed,name=prev_num_shards_search_false,json=prevNumShardsSearchFalse,proto3" json:"prev_num_shards_search_false,omitempty"`
+	LocalReplica             *string `protobuf:"bytes,4,opt,name=local_replica,json=localReplica,proto3,oneof" json:"local_replica,omitempty"`
 }
-func (m *IndexShardSettings) XXX_Size() int {
-	return xxx_messageInfo_IndexShardSettings.Size(m)
+
+func (x *IndexShardSettings) Reset() {
+	*x = IndexShardSettings{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *IndexShardSettings) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndexShardSettings.DiscardUnknown(m)
+
+func (x *IndexShardSettings) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_IndexShardSettings proto.InternalMessageInfo
+func (*IndexShardSettings) ProtoMessage() {}
+
+func (x *IndexShardSettings) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
+}
 
-const Default_IndexShardSettings_NumShards int32 = 1
+// Deprecated: Use IndexShardSettings.ProtoReflect.Descriptor instead.
+func (*IndexShardSettings) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{6}
+}
 
-func (m *IndexShardSettings) GetPrevNumShards() []int32 {
-	if m != nil {
-		return m.PrevNumShards
+func (x *IndexShardSettings) GetPrevNumShards() []int32 {
+	if x != nil {
+		return x.PrevNumShards
 	}
 	return nil
 }
 
-func (m *IndexShardSettings) GetNumShards() int32 {
-	if m != nil && m.NumShards != nil {
-		return *m.NumShards
+func (x *IndexShardSettings) GetNumShards() int32 {
+	if x != nil {
+		return x.NumShards
 	}
-	return Default_IndexShardSettings_NumShards
+	return 0
 }
 
-func (m *IndexShardSettings) GetPrevNumShardsSearchFalse() []int32 {
-	if m != nil {
-		return m.PrevNumShardsSearchFalse
+func (x *IndexShardSettings) GetPrevNumShardsSearchFalse() []int32 {
+	if x != nil {
+		return x.PrevNumShardsSearchFalse
 	}
 	return nil
 }
 
-func (m *IndexShardSettings) GetLocalReplica() string {
-	if m != nil && m.LocalReplica != nil {
-		return *m.LocalReplica
+func (x *IndexShardSettings) GetLocalReplica() string {
+	if x != nil && x.LocalReplica != nil {
+		return *x.LocalReplica
 	}
 	return ""
 }
 
 type FacetValue struct {
-	Type                 *FacetValue_ContentType `protobuf:"varint,1,opt,name=type,enum=search.FacetValue_ContentType,def=2" json:"type,omitempty"`
-	StringValue          *string                 `protobuf:"bytes,3,opt,name=string_value,json=stringValue" json:"string_value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FacetValue) Reset()         { *m = FacetValue{} }
-func (m *FacetValue) String() string { return proto.CompactTextString(m) }
-func (*FacetValue) ProtoMessage()    {}
-func (*FacetValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{7}
-}
-func (m *FacetValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FacetValue.Unmarshal(m, b)
+	Type        *FacetValue_ContentType `protobuf:"varint,1,opt,name=type,proto3,enum=search.FacetValue_ContentType,oneof" json:"type,omitempty"`
+	StringValue *string                 `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof" json:"string_value,omitempty"`
 }
-func (m *FacetValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FacetValue.Marshal(b, m, deterministic)
-}
-func (dst *FacetValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FacetValue.Merge(dst, src)
-}
-func (m *FacetValue) XXX_Size() int {
-	return xxx_messageInfo_FacetValue.Size(m)
+
+func (x *FacetValue) Reset() {
+	*x = FacetValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FacetValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_FacetValue.DiscardUnknown(m)
+
+func (x *FacetValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_FacetValue proto.InternalMessageInfo
+func (*FacetValue) ProtoMessage() {}
+
+func (x *FacetValue) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
+}
 
-const Default_FacetValue_Type FacetValue_ContentType = FacetValue_ATOM
+// Deprecated: Use FacetValue.ProtoReflect.Descriptor instead.
+func (*FacetValue) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{7}
+}
 
-func (m *FacetValue) GetType() FacetValue_ContentType {
-	if m != nil && m.Type != nil {
-		return *m.Type
+func (x *FacetValue) GetType() FacetValue_ContentType {
+	if x != nil && x.Type != nil {
+		return *x.Type
 	}
-	return Default_FacetValue_Type
+	return FacetValue_NONE
 }
 
-func (m *FacetValue) GetStringValue() string {
-	if m != nil && m.StringValue != nil {
-		return *m.StringValue
+func (x *FacetValue) GetStringValue() string {
+	if x != nil && x.StringValue != nil {
+		return *x.StringValue
 	}
 	return ""
 }
 
 type Facet struct {
-	Name                 *string     `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	Value                *FacetValue `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *Facet) Reset()         { *m = Facet{} }
-func (m *Facet) String() string { return proto.CompactTextString(m) }
-func (*Facet) ProtoMessage()    {}
-func (*Facet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{8}
+	Name  string      `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Value *FacetValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (m *Facet) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Facet.Unmarshal(m, b)
-}
-func (m *Facet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Facet.Marshal(b, m, deterministic)
-}
-func (dst *Facet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Facet.Merge(dst, src)
+
+func (x *Facet) Reset() {
+	*x = Facet{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Facet) XXX_Size() int {
-	return xxx_messageInfo_Facet.Size(m)
+
+func (x *Facet) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *Facet) XXX_DiscardUnknown() {
-	xxx_messageInfo_Facet.DiscardUnknown(m)
+
+func (*Facet) ProtoMessage() {}
+
+func (x *Facet) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_Facet proto.InternalMessageInfo
+// Deprecated: Use Facet.ProtoReflect.Descriptor instead.
+func (*Facet) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{8}
+}
 
-func (m *Facet) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *Facet) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *Facet) GetValue() *FacetValue {
-	if m != nil {
-		return m.Value
+func (x *Facet) GetValue() *FacetValue {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
 type DocumentMetadata struct {
-	Version              *int64   `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`
-	CommittedStVersion   *int64   `protobuf:"varint,2,opt,name=committed_st_version,json=committedStVersion" json:"committed_st_version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DocumentMetadata) Reset()         { *m = DocumentMetadata{} }
-func (m *DocumentMetadata) String() string { return proto.CompactTextString(m) }
-func (*DocumentMetadata) ProtoMessage()    {}
-func (*DocumentMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{9}
+	Version            *int64 `protobuf:"varint,1,opt,name=version,proto3,oneof" json:"version,omitempty"`
+	CommittedStVersion *int64 `protobuf:"varint,2,opt,name=committed_st_version,json=committedStVersion,proto3,oneof" json:"committed_st_version,omitempty"`
 }
-func (m *DocumentMetadata) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DocumentMetadata.Unmarshal(m, b)
-}
-func (m *DocumentMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DocumentMetadata.Marshal(b, m, deterministic)
-}
-func (dst *DocumentMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DocumentMetadata.Merge(dst, src)
+
+func (x *DocumentMetadata) Reset() {
+	*x = DocumentMetadata{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DocumentMetadata) XXX_Size() int {
-	return xxx_messageInfo_DocumentMetadata.Size(m)
+
+func (x *DocumentMetadata) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DocumentMetadata) XXX_DiscardUnknown() {
-	xxx_messageInfo_DocumentMetadata.DiscardUnknown(m)
+
+func (*DocumentMetadata) ProtoMessage() {}
+
+func (x *DocumentMetadata) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_DocumentMetadata proto.InternalMessageInfo
+// Deprecated: Use DocumentMetadata.ProtoReflect.Descriptor instead.
+func (*DocumentMetadata) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{9}
+}
 
-func (m *DocumentMetadata) GetVersion() int64 {
-	if m != nil && m.Version != nil {
-		return *m.Version
+func (x *DocumentMetadata) GetVersion() int64 {
+	if x != nil && x.Version != nil {
+		return *x.Version
 	}
 	return 0
 }
 
-func (m *DocumentMetadata) GetCommittedStVersion() int64 {
-	if m != nil && m.CommittedStVersion != nil {
-		return *m.CommittedStVersion
+func (x *DocumentMetadata) GetCommittedStVersion() int64 {
+	if x != nil && x.CommittedStVersion != nil {
+		return *x.CommittedStVersion
 	}
 	return 0
 }
 
 type Document struct {
-	Id                   *string                 `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
-	Language             *string                 `protobuf:"bytes,2,opt,name=language,def=en" json:"language,omitempty"`
-	Field                []*Field                `protobuf:"bytes,3,rep,name=field" json:"field,omitempty"`
-	OrderId              *int32                  `protobuf:"varint,4,opt,name=order_id,json=orderId" json:"order_id,omitempty"`
-	OrderIdSource        *Document_OrderIdSource `protobuf:"varint,6,opt,name=order_id_source,json=orderIdSource,enum=search.Document_OrderIdSource,def=1" json:"order_id_source,omitempty"`
-	Storage              *Document_Storage       `protobuf:"varint,5,opt,name=storage,enum=search.Document_Storage,def=0" json:"storage,omitempty"`
-	Facet                []*Facet                `protobuf:"bytes,8,rep,name=facet" json:"facet,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
-}
-
-func (m *Document) Reset()         { *m = Document{} }
-func (m *Document) String() string { return proto.CompactTextString(m) }
-func (*Document) ProtoMessage()    {}
-func (*Document) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{10}
-}
-func (m *Document) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Document.Unmarshal(m, b)
-}
-func (m *Document) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Document.Marshal(b, m, deterministic)
-}
-func (dst *Document) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Document.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id            *string                 `protobuf:"bytes,1,opt,name=id,proto3,oneof" json:"id,omitempty"`
+	Language      *string                 `protobuf:"bytes,2,opt,name=language,proto3,oneof" json:"language,omitempty"`
+	Field         []*Field                `protobuf:"bytes,3,rep,name=field,proto3" json:"field,omitempty"`
+	OrderId       *int32                  `protobuf:"varint,4,opt,name=order_id,json=orderId,proto3,oneof" json:"order_id,omitempty"`
+	OrderIdSource *Document_OrderIdSource `protobuf:"varint,6,opt,name=order_id_source,json=orderIdSource,proto3,enum=search.Document_OrderIdSource,oneof" json:"order_id_source,omitempty"`
+	Storage       *Document_Storage       `protobuf:"varint,5,opt,name=storage,proto3,enum=search.Document_Storage,oneof" json:"storage,omitempty"`
+	Facet         []*Facet                `protobuf:"bytes,8,rep,name=facet,proto3" json:"facet,omitempty"`
 }
-func (m *Document) XXX_Size() int {
-	return xxx_messageInfo_Document.Size(m)
+
+func (x *Document) Reset() {
+	*x = Document{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *Document) XXX_DiscardUnknown() {
-	xxx_messageInfo_Document.DiscardUnknown(m)
+
+func (x *Document) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_Document proto.InternalMessageInfo
+func (*Document) ProtoMessage() {}
+
+func (x *Document) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
+}
 
-const Default_Document_Language string = "en"
-const Default_Document_OrderIdSource Document_OrderIdSource = Document_SUPPLIED
-const Default_Document_Storage Document_Storage = Document_DISK
+// Deprecated: Use Document.ProtoReflect.Descriptor instead.
+func (*Document) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{10}
+}
 
-func (m *Document) GetId() string {
-	if m != nil && m.Id != nil {
-		return *m.Id
+func (x *Document) GetId() string {
+	if x != nil && x.Id != nil {
+		return *x.Id
 	}
 	return ""
 }
 
-func (m *Document) GetLanguage() string {
-	if m != nil && m.Language != nil {
-		return *m.Language
+func (x *Document) GetLanguage() string {
+	if x != nil && x.Language != nil {
+		return *x.Language
 	}
-	return Default_Document_Language
+	return ""
 }
 
-func (m *Document) GetField() []*Field {
-	if m != nil {
-		return m.Field
+func (x *Document) GetField() []*Field {
+	if x != nil {
+		return x.Field
 	}
 	return nil
 }
 
-func (m *Document) GetOrderId() int32 {
-	if m != nil && m.OrderId != nil {
-		return *m.OrderId
+func (x *Document) GetOrderId() int32 {
+	if x != nil && x.OrderId != nil {
+		return *x.OrderId
 	}
 	return 0
 }
 
-func (m *Document) GetOrderIdSource() Document_OrderIdSource {
-	if m != nil && m.OrderIdSource != nil {
-		return *m.OrderIdSource
+func (x *Document) GetOrderIdSource() Document_OrderIdSource {
+	if x != nil && x.OrderIdSource != nil {
+		return *x.OrderIdSource
 	}
-	return Default_Document_OrderIdSource
+	return Document_DEFAULTED
 }
 
-func (m *Document) GetStorage() Document_Storage {
-	if m != nil && m.Storage != nil {
-		return *m.Storage
+func (x *Document) GetStorage() Document_Storage {
+	if x != nil && x.Storage != nil {
+		return *x.Storage
 	}
-	return Default_Document_Storage
+	return Document_DISK
 }
 
-func (m *Document) GetFacet() []*Facet {
-	if m != nil {
-		return m.Facet
+func (x *Document) GetFacet() []*Facet {
+	if x != nil {
+		return x.Facet
 	}
 	return nil
 }
 
 type SearchServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *SearchServiceError) Reset()         { *m = SearchServiceError{} }
-func (m *SearchServiceError) String() string { return proto.CompactTextString(m) }
-func (*SearchServiceError) ProtoMessage()    {}
-func (*SearchServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{11}
-}
-func (m *SearchServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SearchServiceError.Unmarshal(m, b)
-}
-func (m *SearchServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SearchServiceError.Marshal(b, m, deterministic)
-}
-func (dst *SearchServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SearchServiceError.Merge(dst, src)
-}
-func (m *SearchServiceError) XXX_Size() int {
-	return xxx_messageInfo_SearchServiceError.Size(m)
+func (x *SearchServiceError) Reset() {
+	*x = SearchServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SearchServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_SearchServiceError.DiscardUnknown(m)
+
+func (x *SearchServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_SearchServiceError proto.InternalMessageInfo
+func (*SearchServiceError) ProtoMessage() {}
 
-type RequestStatus struct {
-	Code                 *SearchServiceError_ErrorCode `protobuf:"varint,1,req,name=code,enum=search.SearchServiceError_ErrorCode" json:"code,omitempty"`
-	ErrorDetail          *string                       `protobuf:"bytes,2,opt,name=error_detail,json=errorDetail" json:"error_detail,omitempty"`
-	CanonicalCode        *int32                        `protobuf:"varint,3,opt,name=canonical_code,json=canonicalCode" json:"canonical_code,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
-	XXX_unrecognized     []byte                        `json:"-"`
-	XXX_sizecache        int32                         `json:"-"`
+func (x *SearchServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-func (m *RequestStatus) Reset()         { *m = RequestStatus{} }
-func (m *RequestStatus) String() string { return proto.CompactTextString(m) }
-func (*RequestStatus) ProtoMessage()    {}
-func (*RequestStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{12}
-}
-func (m *RequestStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RequestStatus.Unmarshal(m, b)
+// Deprecated: Use SearchServiceError.ProtoReflect.Descriptor instead.
+func (*SearchServiceError) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{11}
 }
-func (m *RequestStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RequestStatus.Marshal(b, m, deterministic)
+
+type RequestStatus struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code          SearchServiceError_ErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=search.SearchServiceError_ErrorCode" json:"code,omitempty"`
+	ErrorDetail   *string                      `protobuf:"bytes,2,opt,name=error_detail,json=errorDetail,proto3,oneof" json:"error_detail,omitempty"`
+	CanonicalCode *int32                       `protobuf:"varint,3,opt,name=canonical_code,json=canonicalCode,proto3,oneof" json:"canonical_code,omitempty"`
 }
-func (dst *RequestStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RequestStatus.Merge(dst, src)
+
+func (x *RequestStatus) Reset() {
+	*x = RequestStatus{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *RequestStatus) XXX_Size() int {
-	return xxx_messageInfo_RequestStatus.Size(m)
+
+func (x *RequestStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *RequestStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_RequestStatus.DiscardUnknown(m)
+
+func (*RequestStatus) ProtoMessage() {}
+
+func (x *RequestStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_RequestStatus proto.InternalMessageInfo
+// Deprecated: Use RequestStatus.ProtoReflect.Descriptor instead.
+func (*RequestStatus) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{12}
+}
 
-func (m *RequestStatus) GetCode() SearchServiceError_ErrorCode {
-	if m != nil && m.Code != nil {
-		return *m.Code
+func (x *RequestStatus) GetCode() SearchServiceError_ErrorCode {
+	if x != nil {
+		return x.Code
 	}
 	return SearchServiceError_OK
 }
 
-func (m *RequestStatus) GetErrorDetail() string {
-	if m != nil && m.ErrorDetail != nil {
-		return *m.ErrorDetail
+func (x *RequestStatus) GetErrorDetail() string {
+	if x != nil && x.ErrorDetail != nil {
+		return *x.ErrorDetail
 	}
 	return ""
 }
 
-func (m *RequestStatus) GetCanonicalCode() int32 {
-	if m != nil && m.CanonicalCode != nil {
-		return *m.CanonicalCode
+func (x *RequestStatus) GetCanonicalCode() int32 {
+	if x != nil && x.CanonicalCode != nil {
+		return *x.CanonicalCode
 	}
 	return 0
 }
 
 type IndexSpec struct {
-	Name                 *string                `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	Consistency          *IndexSpec_Consistency `protobuf:"varint,2,opt,name=consistency,enum=search.IndexSpec_Consistency,def=1" json:"consistency,omitempty"`
-	Namespace            *string                `protobuf:"bytes,3,opt,name=namespace" json:"namespace,omitempty"`
-	Version              *int32                 `protobuf:"varint,4,opt,name=version" json:"version,omitempty"`
-	Source               *IndexSpec_Source      `protobuf:"varint,5,opt,name=source,enum=search.IndexSpec_Source,def=0" json:"source,omitempty"`
-	Mode                 *IndexSpec_Mode        `protobuf:"varint,6,opt,name=mode,enum=search.IndexSpec_Mode,def=0" json:"mode,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
-}
-
-func (m *IndexSpec) Reset()         { *m = IndexSpec{} }
-func (m *IndexSpec) String() string { return proto.CompactTextString(m) }
-func (*IndexSpec) ProtoMessage()    {}
-func (*IndexSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{13}
-}
-func (m *IndexSpec) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndexSpec.Unmarshal(m, b)
-}
-func (m *IndexSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndexSpec.Marshal(b, m, deterministic)
-}
-func (dst *IndexSpec) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexSpec.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name        string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Consistency *IndexSpec_Consistency `protobuf:"varint,2,opt,name=consistency,proto3,enum=search.IndexSpec_Consistency,oneof" json:"consistency,omitempty"`
+	Namespace   *string                `protobuf:"bytes,3,opt,name=namespace,proto3,oneof" json:"namespace,omitempty"`
+	Version     *int32                 `protobuf:"varint,4,opt,name=version,proto3,oneof" json:"version,omitempty"`
+	Source      *IndexSpec_Source      `protobuf:"varint,5,opt,name=source,proto3,enum=search.IndexSpec_Source,oneof" json:"source,omitempty"`
+	Mode        *IndexSpec_Mode        `protobuf:"varint,6,opt,name=mode,proto3,enum=search.IndexSpec_Mode,oneof" json:"mode,omitempty"`
 }
-func (m *IndexSpec) XXX_Size() int {
-	return xxx_messageInfo_IndexSpec.Size(m)
+
+func (x *IndexSpec) Reset() {
+	*x = IndexSpec{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *IndexSpec) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndexSpec.DiscardUnknown(m)
+
+func (x *IndexSpec) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_IndexSpec proto.InternalMessageInfo
+func (*IndexSpec) ProtoMessage() {}
+
+func (x *IndexSpec) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
+}
 
-const Default_IndexSpec_Consistency IndexSpec_Consistency = IndexSpec_PER_DOCUMENT
-const Default_IndexSpec_Source IndexSpec_Source = IndexSpec_SEARCH
-const Default_IndexSpec_Mode IndexSpec_Mode = IndexSpec_PRIORITY
+// Deprecated: Use IndexSpec.ProtoReflect.Descriptor instead.
+func (*IndexSpec) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{13}
+}
 
-func (m *IndexSpec) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *IndexSpec) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *IndexSpec) GetConsistency() IndexSpec_Consistency {
-	if m != nil && m.Consistency != nil {
-		return *m.Consistency
+func (x *IndexSpec) GetConsistency() IndexSpec_Consistency {
+	if x != nil && x.Consistency != nil {
+		return *x.Consistency
 	}
-	return Default_IndexSpec_Consistency
+	return IndexSpec_GLOBAL
 }
 
-func (m *IndexSpec) GetNamespace() string {
-	if m != nil && m.Namespace != nil {
-		return *m.Namespace
+func (x *IndexSpec) GetNamespace() string {
+	if x != nil && x.Namespace != nil {
+		return *x.Namespace
 	}
 	return ""
 }
 
-func (m *IndexSpec) GetVersion() int32 {
-	if m != nil && m.Version != nil {
-		return *m.Version
+func (x *IndexSpec) GetVersion() int32 {
+	if x != nil && x.Version != nil {
+		return *x.Version
 	}
 	return 0
 }
 
-func (m *IndexSpec) GetSource() IndexSpec_Source {
-	if m != nil && m.Source != nil {
-		return *m.Source
+func (x *IndexSpec) GetSource() IndexSpec_Source {
+	if x != nil && x.Source != nil {
+		return *x.Source
 	}
-	return Default_IndexSpec_Source
+	return IndexSpec_SEARCH
 }
 
-func (m *IndexSpec) GetMode() IndexSpec_Mode {
-	if m != nil && m.Mode != nil {
-		return *m.Mode
+func (x *IndexSpec) GetMode() IndexSpec_Mode {
+	if x != nil && x.Mode != nil {
+		return *x.Mode
 	}
-	return Default_IndexSpec_Mode
+	return IndexSpec_PRIORITY
 }
 
 type IndexMetadata struct {
-	IndexSpec            *IndexSpec             `protobuf:"bytes,1,req,name=index_spec,json=indexSpec" json:"index_spec,omitempty"`
-	Field                []*FieldTypes          `protobuf:"bytes,2,rep,name=field" json:"field,omitempty"`
-	Storage              *IndexMetadata_Storage `protobuf:"bytes,3,opt,name=storage" json:"storage,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *IndexMetadata) Reset()         { *m = IndexMetadata{} }
-func (m *IndexMetadata) String() string { return proto.CompactTextString(m) }
-func (*IndexMetadata) ProtoMessage()    {}
-func (*IndexMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{14}
-}
-func (m *IndexMetadata) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndexMetadata.Unmarshal(m, b)
-}
-func (m *IndexMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndexMetadata.Marshal(b, m, deterministic)
+	IndexSpec *IndexSpec             `protobuf:"bytes,1,opt,name=index_spec,json=indexSpec,proto3" json:"index_spec,omitempty"`
+	Field     []*FieldTypes          `protobuf:"bytes,2,rep,name=field,proto3" json:"field,omitempty"`
+	Storage   *IndexMetadata_Storage `protobuf:"bytes,3,opt,name=storage,proto3,oneof" json:"storage,omitempty"`
 }
-func (dst *IndexMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexMetadata.Merge(dst, src)
+
+func (x *IndexMetadata) Reset() {
+	*x = IndexMetadata{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *IndexMetadata) XXX_Size() int {
-	return xxx_messageInfo_IndexMetadata.Size(m)
+
+func (x *IndexMetadata) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *IndexMetadata) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndexMetadata.DiscardUnknown(m)
+
+func (*IndexMetadata) ProtoMessage() {}
+
+func (x *IndexMetadata) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_IndexMetadata proto.InternalMessageInfo
+// Deprecated: Use IndexMetadata.ProtoReflect.Descriptor instead.
+func (*IndexMetadata) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{14}
+}
 
-func (m *IndexMetadata) GetIndexSpec() *IndexSpec {
-	if m != nil {
-		return m.IndexSpec
+func (x *IndexMetadata) GetIndexSpec() *IndexSpec {
+	if x != nil {
+		return x.IndexSpec
 	}
 	return nil
 }
 
-func (m *IndexMetadata) GetField() []*FieldTypes {
-	if m != nil {
-		return m.Field
+func (x *IndexMetadata) GetField() []*FieldTypes {
+	if x != nil {
+		return x.Field
 	}
 	return nil
 }
 
-func (m *IndexMetadata) GetStorage() *IndexMetadata_Storage {
-	if m != nil {
-		return m.Storage
+func (x *IndexMetadata) GetStorage() *IndexMetadata_Storage {
+	if x != nil {
+		return x.Storage
 	}
 	return nil
 }
 
-type IndexMetadata_Storage struct {
-	AmountUsed           *int64   `protobuf:"varint,1,opt,name=amount_used,json=amountUsed" json:"amount_used,omitempty"`
-	Limit                *int64   `protobuf:"varint,2,opt,name=limit" json:"limit,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type IndexDocumentParams struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *IndexMetadata_Storage) Reset()         { *m = IndexMetadata_Storage{} }
-func (m *IndexMetadata_Storage) String() string { return proto.CompactTextString(m) }
-func (*IndexMetadata_Storage) ProtoMessage()    {}
-func (*IndexMetadata_Storage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{14, 0}
-}
-func (m *IndexMetadata_Storage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndexMetadata_Storage.Unmarshal(m, b)
-}
-func (m *IndexMetadata_Storage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndexMetadata_Storage.Marshal(b, m, deterministic)
-}
-func (dst *IndexMetadata_Storage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexMetadata_Storage.Merge(dst, src)
-}
-func (m *IndexMetadata_Storage) XXX_Size() int {
-	return xxx_messageInfo_IndexMetadata_Storage.Size(m)
+	Document  []*Document                    `protobuf:"bytes,1,rep,name=document,proto3" json:"document,omitempty"`
+	Freshness *IndexDocumentParams_Freshness `protobuf:"varint,2,opt,name=freshness,proto3,enum=search.IndexDocumentParams_Freshness,oneof" json:"freshness,omitempty"`
+	IndexSpec *IndexSpec                     `protobuf:"bytes,3,opt,name=index_spec,json=indexSpec,proto3" json:"index_spec,omitempty"`
 }
-func (m *IndexMetadata_Storage) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndexMetadata_Storage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IndexMetadata_Storage proto.InternalMessageInfo
 
-func (m *IndexMetadata_Storage) GetAmountUsed() int64 {
-	if m != nil && m.AmountUsed != nil {
-		return *m.AmountUsed
+func (x *IndexDocumentParams) Reset() {
+	*x = IndexDocumentParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (m *IndexMetadata_Storage) GetLimit() int64 {
-	if m != nil && m.Limit != nil {
-		return *m.Limit
-	}
-	return 0
+func (x *IndexDocumentParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-type IndexDocumentParams struct {
-	Document             []*Document                    `protobuf:"bytes,1,rep,name=document" json:"document,omitempty"`
-	Freshness            *IndexDocumentParams_Freshness `protobuf:"varint,2,opt,name=freshness,enum=search.IndexDocumentParams_Freshness,def=0" json:"freshness,omitempty"` // Deprecated: Do not use.
-	IndexSpec            *IndexSpec                     `protobuf:"bytes,3,req,name=index_spec,json=indexSpec" json:"index_spec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
-	XXX_unrecognized     []byte                         `json:"-"`
-	XXX_sizecache        int32                          `json:"-"`
+func (*IndexDocumentParams) ProtoMessage() {}
+
+func (x *IndexDocumentParams) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-func (m *IndexDocumentParams) Reset()         { *m = IndexDocumentParams{} }
-func (m *IndexDocumentParams) String() string { return proto.CompactTextString(m) }
-func (*IndexDocumentParams) ProtoMessage()    {}
+// Deprecated: Use IndexDocumentParams.ProtoReflect.Descriptor instead.
 func (*IndexDocumentParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{15}
+	return file_search_proto_rawDescGZIP(), []int{15}
 }
-func (m *IndexDocumentParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndexDocumentParams.Unmarshal(m, b)
-}
-func (m *IndexDocumentParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndexDocumentParams.Marshal(b, m, deterministic)
-}
-func (dst *IndexDocumentParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexDocumentParams.Merge(dst, src)
-}
-func (m *IndexDocumentParams) XXX_Size() int {
-	return xxx_messageInfo_IndexDocumentParams.Size(m)
-}
-func (m *IndexDocumentParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndexDocumentParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IndexDocumentParams proto.InternalMessageInfo
 
-const Default_IndexDocumentParams_Freshness IndexDocumentParams_Freshness = IndexDocumentParams_SYNCHRONOUSLY
-
-func (m *IndexDocumentParams) GetDocument() []*Document {
-	if m != nil {
-		return m.Document
+func (x *IndexDocumentParams) GetDocument() []*Document {
+	if x != nil {
+		return x.Document
 	}
 	return nil
 }
 
-// Deprecated: Do not use.
-func (m *IndexDocumentParams) GetFreshness() IndexDocumentParams_Freshness {
-	if m != nil && m.Freshness != nil {
-		return *m.Freshness
+func (x *IndexDocumentParams) GetFreshness() IndexDocumentParams_Freshness {
+	if x != nil && x.Freshness != nil {
+		return *x.Freshness
 	}
-	return Default_IndexDocumentParams_Freshness
+	return IndexDocumentParams_SYNCHRONOUSLY
 }
 
-func (m *IndexDocumentParams) GetIndexSpec() *IndexSpec {
-	if m != nil {
-		return m.IndexSpec
+func (x *IndexDocumentParams) GetIndexSpec() *IndexSpec {
+	if x != nil {
+		return x.IndexSpec
 	}
 	return nil
 }
 
 type IndexDocumentRequest struct {
-	Params               *IndexDocumentParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"`
-	AppId                []byte               `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *IndexDocumentRequest) Reset()         { *m = IndexDocumentRequest{} }
-func (m *IndexDocumentRequest) String() string { return proto.CompactTextString(m) }
-func (*IndexDocumentRequest) ProtoMessage()    {}
-func (*IndexDocumentRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{16}
-}
-func (m *IndexDocumentRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndexDocumentRequest.Unmarshal(m, b)
+	Params *IndexDocumentParams `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
+	AppId  []byte               `protobuf:"bytes,3,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
 }
-func (m *IndexDocumentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndexDocumentRequest.Marshal(b, m, deterministic)
-}
-func (dst *IndexDocumentRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexDocumentRequest.Merge(dst, src)
+
+func (x *IndexDocumentRequest) Reset() {
+	*x = IndexDocumentRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *IndexDocumentRequest) XXX_Size() int {
-	return xxx_messageInfo_IndexDocumentRequest.Size(m)
+
+func (x *IndexDocumentRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *IndexDocumentRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndexDocumentRequest.DiscardUnknown(m)
+
+func (*IndexDocumentRequest) ProtoMessage() {}
+
+func (x *IndexDocumentRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_IndexDocumentRequest proto.InternalMessageInfo
+// Deprecated: Use IndexDocumentRequest.ProtoReflect.Descriptor instead.
+func (*IndexDocumentRequest) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{16}
+}
 
-func (m *IndexDocumentRequest) GetParams() *IndexDocumentParams {
-	if m != nil {
-		return m.Params
+func (x *IndexDocumentRequest) GetParams() *IndexDocumentParams {
+	if x != nil {
+		return x.Params
 	}
 	return nil
 }
 
-func (m *IndexDocumentRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *IndexDocumentRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
 type IndexDocumentResponse struct {
-	Status               []*RequestStatus `protobuf:"bytes,1,rep,name=status" json:"status,omitempty"`
-	DocId                []string         `protobuf:"bytes,2,rep,name=doc_id,json=docId" json:"doc_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *IndexDocumentResponse) Reset()         { *m = IndexDocumentResponse{} }
-func (m *IndexDocumentResponse) String() string { return proto.CompactTextString(m) }
-func (*IndexDocumentResponse) ProtoMessage()    {}
-func (*IndexDocumentResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{17}
-}
-func (m *IndexDocumentResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndexDocumentResponse.Unmarshal(m, b)
+	Status []*RequestStatus `protobuf:"bytes,1,rep,name=status,proto3" json:"status,omitempty"`
+	DocId  []string         `protobuf:"bytes,2,rep,name=doc_id,json=docId,proto3" json:"doc_id,omitempty"`
 }
-func (m *IndexDocumentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndexDocumentResponse.Marshal(b, m, deterministic)
-}
-func (dst *IndexDocumentResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexDocumentResponse.Merge(dst, src)
+
+func (x *IndexDocumentResponse) Reset() {
+	*x = IndexDocumentResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *IndexDocumentResponse) XXX_Size() int {
-	return xxx_messageInfo_IndexDocumentResponse.Size(m)
+
+func (x *IndexDocumentResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *IndexDocumentResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndexDocumentResponse.DiscardUnknown(m)
+
+func (*IndexDocumentResponse) ProtoMessage() {}
+
+func (x *IndexDocumentResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_IndexDocumentResponse proto.InternalMessageInfo
+// Deprecated: Use IndexDocumentResponse.ProtoReflect.Descriptor instead.
+func (*IndexDocumentResponse) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{17}
+}
 
-func (m *IndexDocumentResponse) GetStatus() []*RequestStatus {
-	if m != nil {
-		return m.Status
+func (x *IndexDocumentResponse) GetStatus() []*RequestStatus {
+	if x != nil {
+		return x.Status
 	}
 	return nil
 }
 
-func (m *IndexDocumentResponse) GetDocId() []string {
-	if m != nil {
-		return m.DocId
+func (x *IndexDocumentResponse) GetDocId() []string {
+	if x != nil {
+		return x.DocId
 	}
 	return nil
 }
 
 type DeleteDocumentParams struct {
-	DocId                []string   `protobuf:"bytes,1,rep,name=doc_id,json=docId" json:"doc_id,omitempty"`
-	IndexSpec            *IndexSpec `protobuf:"bytes,2,req,name=index_spec,json=indexSpec" json:"index_spec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DeleteDocumentParams) Reset()         { *m = DeleteDocumentParams{} }
-func (m *DeleteDocumentParams) String() string { return proto.CompactTextString(m) }
-func (*DeleteDocumentParams) ProtoMessage()    {}
-func (*DeleteDocumentParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{18}
-}
-func (m *DeleteDocumentParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteDocumentParams.Unmarshal(m, b)
+	DocId     []string   `protobuf:"bytes,1,rep,name=doc_id,json=docId,proto3" json:"doc_id,omitempty"`
+	IndexSpec *IndexSpec `protobuf:"bytes,2,opt,name=index_spec,json=indexSpec,proto3" json:"index_spec,omitempty"`
 }
-func (m *DeleteDocumentParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteDocumentParams.Marshal(b, m, deterministic)
-}
-func (dst *DeleteDocumentParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteDocumentParams.Merge(dst, src)
+
+func (x *DeleteDocumentParams) Reset() {
+	*x = DeleteDocumentParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DeleteDocumentParams) XXX_Size() int {
-	return xxx_messageInfo_DeleteDocumentParams.Size(m)
+
+func (x *DeleteDocumentParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DeleteDocumentParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteDocumentParams.DiscardUnknown(m)
+
+func (*DeleteDocumentParams) ProtoMessage() {}
+
+func (x *DeleteDocumentParams) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_DeleteDocumentParams proto.InternalMessageInfo
+// Deprecated: Use DeleteDocumentParams.ProtoReflect.Descriptor instead.
+func (*DeleteDocumentParams) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{18}
+}
 
-func (m *DeleteDocumentParams) GetDocId() []string {
-	if m != nil {
-		return m.DocId
+func (x *DeleteDocumentParams) GetDocId() []string {
+	if x != nil {
+		return x.DocId
 	}
 	return nil
 }
 
-func (m *DeleteDocumentParams) GetIndexSpec() *IndexSpec {
-	if m != nil {
-		return m.IndexSpec
+func (x *DeleteDocumentParams) GetIndexSpec() *IndexSpec {
+	if x != nil {
+		return x.IndexSpec
 	}
 	return nil
 }
 
 type DeleteDocumentRequest struct {
-	Params               *DeleteDocumentParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"`
-	AppId                []byte                `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DeleteDocumentRequest) Reset()         { *m = DeleteDocumentRequest{} }
-func (m *DeleteDocumentRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteDocumentRequest) ProtoMessage()    {}
-func (*DeleteDocumentRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{19}
-}
-func (m *DeleteDocumentRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteDocumentRequest.Unmarshal(m, b)
+	Params *DeleteDocumentParams `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
+	AppId  []byte                `protobuf:"bytes,3,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
 }
-func (m *DeleteDocumentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteDocumentRequest.Marshal(b, m, deterministic)
-}
-func (dst *DeleteDocumentRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteDocumentRequest.Merge(dst, src)
+
+func (x *DeleteDocumentRequest) Reset() {
+	*x = DeleteDocumentRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DeleteDocumentRequest) XXX_Size() int {
-	return xxx_messageInfo_DeleteDocumentRequest.Size(m)
+
+func (x *DeleteDocumentRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DeleteDocumentRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteDocumentRequest.DiscardUnknown(m)
+
+func (*DeleteDocumentRequest) ProtoMessage() {}
+
+func (x *DeleteDocumentRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_DeleteDocumentRequest proto.InternalMessageInfo
+// Deprecated: Use DeleteDocumentRequest.ProtoReflect.Descriptor instead.
+func (*DeleteDocumentRequest) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{19}
+}
 
-func (m *DeleteDocumentRequest) GetParams() *DeleteDocumentParams {
-	if m != nil {
-		return m.Params
+func (x *DeleteDocumentRequest) GetParams() *DeleteDocumentParams {
+	if x != nil {
+		return x.Params
 	}
 	return nil
 }
 
-func (m *DeleteDocumentRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *DeleteDocumentRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
 type DeleteDocumentResponse struct {
-	Status               []*RequestStatus `protobuf:"bytes,1,rep,name=status" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DeleteDocumentResponse) Reset()         { *m = DeleteDocumentResponse{} }
-func (m *DeleteDocumentResponse) String() string { return proto.CompactTextString(m) }
-func (*DeleteDocumentResponse) ProtoMessage()    {}
-func (*DeleteDocumentResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{20}
-}
-func (m *DeleteDocumentResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteDocumentResponse.Unmarshal(m, b)
+	Status []*RequestStatus `protobuf:"bytes,1,rep,name=status,proto3" json:"status,omitempty"`
 }
-func (m *DeleteDocumentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteDocumentResponse.Marshal(b, m, deterministic)
-}
-func (dst *DeleteDocumentResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteDocumentResponse.Merge(dst, src)
+
+func (x *DeleteDocumentResponse) Reset() {
+	*x = DeleteDocumentResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DeleteDocumentResponse) XXX_Size() int {
-	return xxx_messageInfo_DeleteDocumentResponse.Size(m)
+
+func (x *DeleteDocumentResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DeleteDocumentResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteDocumentResponse.DiscardUnknown(m)
+
+func (*DeleteDocumentResponse) ProtoMessage() {}
+
+func (x *DeleteDocumentResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_DeleteDocumentResponse proto.InternalMessageInfo
+// Deprecated: Use DeleteDocumentResponse.ProtoReflect.Descriptor instead.
+func (*DeleteDocumentResponse) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{20}
+}
 
-func (m *DeleteDocumentResponse) GetStatus() []*RequestStatus {
-	if m != nil {
-		return m.Status
+func (x *DeleteDocumentResponse) GetStatus() []*RequestStatus {
+	if x != nil {
+		return x.Status
 	}
 	return nil
 }
 
 type ListDocumentsParams struct {
-	IndexSpec            *IndexSpec `protobuf:"bytes,1,req,name=index_spec,json=indexSpec" json:"index_spec,omitempty"`
-	StartDocId           *string    `protobuf:"bytes,2,opt,name=start_doc_id,json=startDocId" json:"start_doc_id,omitempty"`
-	IncludeStartDoc      *bool      `protobuf:"varint,3,opt,name=include_start_doc,json=includeStartDoc,def=1" json:"include_start_doc,omitempty"`
-	Limit                *int32     `protobuf:"varint,4,opt,name=limit,def=100" json:"limit,omitempty"`
-	KeysOnly             *bool      `protobuf:"varint,5,opt,name=keys_only,json=keysOnly" json:"keys_only,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
-
-func (m *ListDocumentsParams) Reset()         { *m = ListDocumentsParams{} }
-func (m *ListDocumentsParams) String() string { return proto.CompactTextString(m) }
-func (*ListDocumentsParams) ProtoMessage()    {}
-func (*ListDocumentsParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{21}
-}
-func (m *ListDocumentsParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ListDocumentsParams.Unmarshal(m, b)
-}
-func (m *ListDocumentsParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ListDocumentsParams.Marshal(b, m, deterministic)
-}
-func (dst *ListDocumentsParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ListDocumentsParams.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	IndexSpec       *IndexSpec `protobuf:"bytes,1,opt,name=index_spec,json=indexSpec,proto3" json:"index_spec,omitempty"`
+	StartDocId      *string    `protobuf:"bytes,2,opt,name=start_doc_id,json=startDocId,proto3,oneof" json:"start_doc_id,omitempty"`
+	IncludeStartDoc *bool      `protobuf:"varint,3,opt,name=include_start_doc,json=includeStartDoc,proto3,oneof" json:"include_start_doc,omitempty"`
+	Limit           *int32     `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
+	KeysOnly        *bool      `protobuf:"varint,5,opt,name=keys_only,json=keysOnly,proto3,oneof" json:"keys_only,omitempty"`
 }
-func (m *ListDocumentsParams) XXX_Size() int {
-	return xxx_messageInfo_ListDocumentsParams.Size(m)
+
+func (x *ListDocumentsParams) Reset() {
+	*x = ListDocumentsParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ListDocumentsParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ListDocumentsParams.DiscardUnknown(m)
+
+func (x *ListDocumentsParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ListDocumentsParams proto.InternalMessageInfo
+func (*ListDocumentsParams) ProtoMessage() {}
+
+func (x *ListDocumentsParams) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
+}
 
-const Default_ListDocumentsParams_IncludeStartDoc bool = true
-const Default_ListDocumentsParams_Limit int32 = 100
+// Deprecated: Use ListDocumentsParams.ProtoReflect.Descriptor instead.
+func (*ListDocumentsParams) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{21}
+}
 
-func (m *ListDocumentsParams) GetIndexSpec() *IndexSpec {
-	if m != nil {
-		return m.IndexSpec
+func (x *ListDocumentsParams) GetIndexSpec() *IndexSpec {
+	if x != nil {
+		return x.IndexSpec
 	}
 	return nil
 }
 
-func (m *ListDocumentsParams) GetStartDocId() string {
-	if m != nil && m.StartDocId != nil {
-		return *m.StartDocId
+func (x *ListDocumentsParams) GetStartDocId() string {
+	if x != nil && x.StartDocId != nil {
+		return *x.StartDocId
 	}
 	return ""
 }
 
-func (m *ListDocumentsParams) GetIncludeStartDoc() bool {
-	if m != nil && m.IncludeStartDoc != nil {
-		return *m.IncludeStartDoc
+func (x *ListDocumentsParams) GetIncludeStartDoc() bool {
+	if x != nil && x.IncludeStartDoc != nil {
+		return *x.IncludeStartDoc
 	}
-	return Default_ListDocumentsParams_IncludeStartDoc
+	return false
 }
 
-func (m *ListDocumentsParams) GetLimit() int32 {
-	if m != nil && m.Limit != nil {
-		return *m.Limit
+func (x *ListDocumentsParams) GetLimit() int32 {
+	if x != nil && x.Limit != nil {
+		return *x.Limit
 	}
-	return Default_ListDocumentsParams_Limit
+	return 0
 }
 
-func (m *ListDocumentsParams) GetKeysOnly() bool {
-	if m != nil && m.KeysOnly != nil {
-		return *m.KeysOnly
+func (x *ListDocumentsParams) GetKeysOnly() bool {
+	if x != nil && x.KeysOnly != nil {
+		return *x.KeysOnly
 	}
 	return false
 }
 
 type ListDocumentsRequest struct {
-	Params               *ListDocumentsParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"`
-	AppId                []byte               `protobuf:"bytes,2,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ListDocumentsRequest) Reset()         { *m = ListDocumentsRequest{} }
-func (m *ListDocumentsRequest) String() string { return proto.CompactTextString(m) }
-func (*ListDocumentsRequest) ProtoMessage()    {}
-func (*ListDocumentsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{22}
+	Params *ListDocumentsParams `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
+	AppId  []byte               `protobuf:"bytes,2,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
 }
-func (m *ListDocumentsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ListDocumentsRequest.Unmarshal(m, b)
-}
-func (m *ListDocumentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ListDocumentsRequest.Marshal(b, m, deterministic)
-}
-func (dst *ListDocumentsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ListDocumentsRequest.Merge(dst, src)
+
+func (x *ListDocumentsRequest) Reset() {
+	*x = ListDocumentsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[22]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ListDocumentsRequest) XXX_Size() int {
-	return xxx_messageInfo_ListDocumentsRequest.Size(m)
+
+func (x *ListDocumentsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ListDocumentsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ListDocumentsRequest.DiscardUnknown(m)
+
+func (*ListDocumentsRequest) ProtoMessage() {}
+
+func (x *ListDocumentsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_ListDocumentsRequest proto.InternalMessageInfo
+// Deprecated: Use ListDocumentsRequest.ProtoReflect.Descriptor instead.
+func (*ListDocumentsRequest) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{22}
+}
 
-func (m *ListDocumentsRequest) GetParams() *ListDocumentsParams {
-	if m != nil {
-		return m.Params
+func (x *ListDocumentsRequest) GetParams() *ListDocumentsParams {
+	if x != nil {
+		return x.Params
 	}
 	return nil
 }
 
-func (m *ListDocumentsRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *ListDocumentsRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
 type ListDocumentsResponse struct {
-	Status               *RequestStatus `protobuf:"bytes,1,req,name=status" json:"status,omitempty"`
-	Document             []*Document    `protobuf:"bytes,2,rep,name=document" json:"document,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ListDocumentsResponse) Reset()         { *m = ListDocumentsResponse{} }
-func (m *ListDocumentsResponse) String() string { return proto.CompactTextString(m) }
-func (*ListDocumentsResponse) ProtoMessage()    {}
-func (*ListDocumentsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{23}
+	Status   *RequestStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
+	Document []*Document    `protobuf:"bytes,2,rep,name=document,proto3" json:"document,omitempty"`
 }
-func (m *ListDocumentsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ListDocumentsResponse.Unmarshal(m, b)
-}
-func (m *ListDocumentsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ListDocumentsResponse.Marshal(b, m, deterministic)
-}
-func (dst *ListDocumentsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ListDocumentsResponse.Merge(dst, src)
-}
-func (m *ListDocumentsResponse) XXX_Size() int {
-	return xxx_messageInfo_ListDocumentsResponse.Size(m)
+
+func (x *ListDocumentsResponse) Reset() {
+	*x = ListDocumentsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[23]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ListDocumentsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ListDocumentsResponse.DiscardUnknown(m)
+
+func (x *ListDocumentsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ListDocumentsResponse proto.InternalMessageInfo
+func (*ListDocumentsResponse) ProtoMessage() {}
 
-func (m *ListDocumentsResponse) GetStatus() *RequestStatus {
-	if m != nil {
-		return m.Status
+func (x *ListDocumentsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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 nil
+	return mi.MessageOf(x)
 }
 
-func (m *ListDocumentsResponse) GetDocument() []*Document {
-	if m != nil {
-		return m.Document
-	}
-	return nil
+// Deprecated: Use ListDocumentsResponse.ProtoReflect.Descriptor instead.
+func (*ListDocumentsResponse) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{23}
 }
 
-type ListIndexesParams struct {
-	FetchSchema          *bool             `protobuf:"varint,1,opt,name=fetch_schema,json=fetchSchema" json:"fetch_schema,omitempty"`
-	Limit                *int32            `protobuf:"varint,2,opt,name=limit,def=20" json:"limit,omitempty"`
-	Namespace            *string           `protobuf:"bytes,3,opt,name=namespace" json:"namespace,omitempty"`
-	StartIndexName       *string           `protobuf:"bytes,4,opt,name=start_index_name,json=startIndexName" json:"start_index_name,omitempty"`
-	IncludeStartIndex    *bool             `protobuf:"varint,5,opt,name=include_start_index,json=includeStartIndex,def=1" json:"include_start_index,omitempty"`
-	IndexNamePrefix      *string           `protobuf:"bytes,6,opt,name=index_name_prefix,json=indexNamePrefix" json:"index_name_prefix,omitempty"`
-	Offset               *int32            `protobuf:"varint,7,opt,name=offset" json:"offset,omitempty"`
-	Source               *IndexSpec_Source `protobuf:"varint,8,opt,name=source,enum=search.IndexSpec_Source,def=0" json:"source,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *ListIndexesParams) Reset()         { *m = ListIndexesParams{} }
-func (m *ListIndexesParams) String() string { return proto.CompactTextString(m) }
-func (*ListIndexesParams) ProtoMessage()    {}
-func (*ListIndexesParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{24}
-}
-func (m *ListIndexesParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ListIndexesParams.Unmarshal(m, b)
+func (x *ListDocumentsResponse) GetStatus() *RequestStatus {
+	if x != nil {
+		return x.Status
+	}
+	return nil
 }
-func (m *ListIndexesParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ListIndexesParams.Marshal(b, m, deterministic)
+
+func (x *ListDocumentsResponse) GetDocument() []*Document {
+	if x != nil {
+		return x.Document
+	}
+	return nil
 }
-func (dst *ListIndexesParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ListIndexesParams.Merge(dst, src)
+
+type ListIndexesParams struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	FetchSchema       *bool             `protobuf:"varint,1,opt,name=fetch_schema,json=fetchSchema,proto3,oneof" json:"fetch_schema,omitempty"`
+	Limit             *int32            `protobuf:"varint,2,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
+	Namespace         *string           `protobuf:"bytes,3,opt,name=namespace,proto3,oneof" json:"namespace,omitempty"`
+	StartIndexName    *string           `protobuf:"bytes,4,opt,name=start_index_name,json=startIndexName,proto3,oneof" json:"start_index_name,omitempty"`
+	IncludeStartIndex *bool             `protobuf:"varint,5,opt,name=include_start_index,json=includeStartIndex,proto3,oneof" json:"include_start_index,omitempty"`
+	IndexNamePrefix   *string           `protobuf:"bytes,6,opt,name=index_name_prefix,json=indexNamePrefix,proto3,oneof" json:"index_name_prefix,omitempty"`
+	Offset            *int32            `protobuf:"varint,7,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+	Source            *IndexSpec_Source `protobuf:"varint,8,opt,name=source,proto3,enum=search.IndexSpec_Source,oneof" json:"source,omitempty"`
 }
-func (m *ListIndexesParams) XXX_Size() int {
-	return xxx_messageInfo_ListIndexesParams.Size(m)
+
+func (x *ListIndexesParams) Reset() {
+	*x = ListIndexesParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[24]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ListIndexesParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ListIndexesParams.DiscardUnknown(m)
+
+func (x *ListIndexesParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ListIndexesParams proto.InternalMessageInfo
+func (*ListIndexesParams) ProtoMessage() {}
 
-const Default_ListIndexesParams_Limit int32 = 20
-const Default_ListIndexesParams_IncludeStartIndex bool = true
-const Default_ListIndexesParams_Source IndexSpec_Source = IndexSpec_SEARCH
+func (x *ListIndexesParams) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
+}
 
-func (m *ListIndexesParams) GetFetchSchema() bool {
-	if m != nil && m.FetchSchema != nil {
-		return *m.FetchSchema
+// Deprecated: Use ListIndexesParams.ProtoReflect.Descriptor instead.
+func (*ListIndexesParams) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *ListIndexesParams) GetFetchSchema() bool {
+	if x != nil && x.FetchSchema != nil {
+		return *x.FetchSchema
 	}
 	return false
 }
 
-func (m *ListIndexesParams) GetLimit() int32 {
-	if m != nil && m.Limit != nil {
-		return *m.Limit
+func (x *ListIndexesParams) GetLimit() int32 {
+	if x != nil && x.Limit != nil {
+		return *x.Limit
 	}
-	return Default_ListIndexesParams_Limit
+	return 0
 }
 
-func (m *ListIndexesParams) GetNamespace() string {
-	if m != nil && m.Namespace != nil {
-		return *m.Namespace
+func (x *ListIndexesParams) GetNamespace() string {
+	if x != nil && x.Namespace != nil {
+		return *x.Namespace
 	}
 	return ""
 }
 
-func (m *ListIndexesParams) GetStartIndexName() string {
-	if m != nil && m.StartIndexName != nil {
-		return *m.StartIndexName
+func (x *ListIndexesParams) GetStartIndexName() string {
+	if x != nil && x.StartIndexName != nil {
+		return *x.StartIndexName
 	}
 	return ""
 }
 
-func (m *ListIndexesParams) GetIncludeStartIndex() bool {
-	if m != nil && m.IncludeStartIndex != nil {
-		return *m.IncludeStartIndex
+func (x *ListIndexesParams) GetIncludeStartIndex() bool {
+	if x != nil && x.IncludeStartIndex != nil {
+		return *x.IncludeStartIndex
 	}
-	return Default_ListIndexesParams_IncludeStartIndex
+	return false
 }
 
-func (m *ListIndexesParams) GetIndexNamePrefix() string {
-	if m != nil && m.IndexNamePrefix != nil {
-		return *m.IndexNamePrefix
+func (x *ListIndexesParams) GetIndexNamePrefix() string {
+	if x != nil && x.IndexNamePrefix != nil {
+		return *x.IndexNamePrefix
 	}
 	return ""
 }
 
-func (m *ListIndexesParams) GetOffset() int32 {
-	if m != nil && m.Offset != nil {
-		return *m.Offset
+func (x *ListIndexesParams) GetOffset() int32 {
+	if x != nil && x.Offset != nil {
+		return *x.Offset
 	}
 	return 0
 }
 
-func (m *ListIndexesParams) GetSource() IndexSpec_Source {
-	if m != nil && m.Source != nil {
-		return *m.Source
+func (x *ListIndexesParams) GetSource() IndexSpec_Source {
+	if x != nil && x.Source != nil {
+		return *x.Source
 	}
-	return Default_ListIndexesParams_Source
+	return IndexSpec_SEARCH
 }
 
 type ListIndexesRequest struct {
-	Params               *ListIndexesParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"`
-	AppId                []byte             `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ListIndexesRequest) Reset()         { *m = ListIndexesRequest{} }
-func (m *ListIndexesRequest) String() string { return proto.CompactTextString(m) }
-func (*ListIndexesRequest) ProtoMessage()    {}
-func (*ListIndexesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{25}
-}
-func (m *ListIndexesRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ListIndexesRequest.Unmarshal(m, b)
+	Params *ListIndexesParams `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
+	AppId  []byte             `protobuf:"bytes,3,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
 }
-func (m *ListIndexesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ListIndexesRequest.Marshal(b, m, deterministic)
-}
-func (dst *ListIndexesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ListIndexesRequest.Merge(dst, src)
+
+func (x *ListIndexesRequest) Reset() {
+	*x = ListIndexesRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[25]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ListIndexesRequest) XXX_Size() int {
-	return xxx_messageInfo_ListIndexesRequest.Size(m)
+
+func (x *ListIndexesRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ListIndexesRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ListIndexesRequest.DiscardUnknown(m)
+
+func (*ListIndexesRequest) ProtoMessage() {}
+
+func (x *ListIndexesRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_ListIndexesRequest proto.InternalMessageInfo
+// Deprecated: Use ListIndexesRequest.ProtoReflect.Descriptor instead.
+func (*ListIndexesRequest) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{25}
+}
 
-func (m *ListIndexesRequest) GetParams() *ListIndexesParams {
-	if m != nil {
-		return m.Params
+func (x *ListIndexesRequest) GetParams() *ListIndexesParams {
+	if x != nil {
+		return x.Params
 	}
 	return nil
 }
 
-func (m *ListIndexesRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *ListIndexesRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
 type ListIndexesResponse struct {
-	Status               *RequestStatus   `protobuf:"bytes,1,req,name=status" json:"status,omitempty"`
-	IndexMetadata        []*IndexMetadata `protobuf:"bytes,2,rep,name=index_metadata,json=indexMetadata" json:"index_metadata,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ListIndexesResponse) Reset()         { *m = ListIndexesResponse{} }
-func (m *ListIndexesResponse) String() string { return proto.CompactTextString(m) }
-func (*ListIndexesResponse) ProtoMessage()    {}
-func (*ListIndexesResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{26}
-}
-func (m *ListIndexesResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ListIndexesResponse.Unmarshal(m, b)
+	Status        *RequestStatus   `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
+	IndexMetadata []*IndexMetadata `protobuf:"bytes,2,rep,name=index_metadata,json=indexMetadata,proto3" json:"index_metadata,omitempty"`
 }
-func (m *ListIndexesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ListIndexesResponse.Marshal(b, m, deterministic)
-}
-func (dst *ListIndexesResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ListIndexesResponse.Merge(dst, src)
+
+func (x *ListIndexesResponse) Reset() {
+	*x = ListIndexesResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[26]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ListIndexesResponse) XXX_Size() int {
-	return xxx_messageInfo_ListIndexesResponse.Size(m)
+
+func (x *ListIndexesResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ListIndexesResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ListIndexesResponse.DiscardUnknown(m)
+
+func (*ListIndexesResponse) ProtoMessage() {}
+
+func (x *ListIndexesResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_ListIndexesResponse proto.InternalMessageInfo
+// Deprecated: Use ListIndexesResponse.ProtoReflect.Descriptor instead.
+func (*ListIndexesResponse) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{26}
+}
 
-func (m *ListIndexesResponse) GetStatus() *RequestStatus {
-	if m != nil {
-		return m.Status
+func (x *ListIndexesResponse) GetStatus() *RequestStatus {
+	if x != nil {
+		return x.Status
 	}
 	return nil
 }
 
-func (m *ListIndexesResponse) GetIndexMetadata() []*IndexMetadata {
-	if m != nil {
-		return m.IndexMetadata
+func (x *ListIndexesResponse) GetIndexMetadata() []*IndexMetadata {
+	if x != nil {
+		return x.IndexMetadata
 	}
 	return nil
 }
 
 type DeleteSchemaParams struct {
-	Source               *IndexSpec_Source `protobuf:"varint,1,opt,name=source,enum=search.IndexSpec_Source,def=0" json:"source,omitempty"`
-	IndexSpec            []*IndexSpec      `protobuf:"bytes,2,rep,name=index_spec,json=indexSpec" json:"index_spec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DeleteSchemaParams) Reset()         { *m = DeleteSchemaParams{} }
-func (m *DeleteSchemaParams) String() string { return proto.CompactTextString(m) }
-func (*DeleteSchemaParams) ProtoMessage()    {}
-func (*DeleteSchemaParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{27}
-}
-func (m *DeleteSchemaParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteSchemaParams.Unmarshal(m, b)
-}
-func (m *DeleteSchemaParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteSchemaParams.Marshal(b, m, deterministic)
-}
-func (dst *DeleteSchemaParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteSchemaParams.Merge(dst, src)
+	Source    *IndexSpec_Source `protobuf:"varint,1,opt,name=source,proto3,enum=search.IndexSpec_Source,oneof" json:"source,omitempty"`
+	IndexSpec []*IndexSpec      `protobuf:"bytes,2,rep,name=index_spec,json=indexSpec,proto3" json:"index_spec,omitempty"`
 }
-func (m *DeleteSchemaParams) XXX_Size() int {
-	return xxx_messageInfo_DeleteSchemaParams.Size(m)
+
+func (x *DeleteSchemaParams) Reset() {
+	*x = DeleteSchemaParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[27]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DeleteSchemaParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteSchemaParams.DiscardUnknown(m)
+
+func (x *DeleteSchemaParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_DeleteSchemaParams proto.InternalMessageInfo
+func (*DeleteSchemaParams) ProtoMessage() {}
 
-const Default_DeleteSchemaParams_Source IndexSpec_Source = IndexSpec_SEARCH
+func (x *DeleteSchemaParams) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
+}
 
-func (m *DeleteSchemaParams) GetSource() IndexSpec_Source {
-	if m != nil && m.Source != nil {
-		return *m.Source
+// Deprecated: Use DeleteSchemaParams.ProtoReflect.Descriptor instead.
+func (*DeleteSchemaParams) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *DeleteSchemaParams) GetSource() IndexSpec_Source {
+	if x != nil && x.Source != nil {
+		return *x.Source
 	}
-	return Default_DeleteSchemaParams_Source
+	return IndexSpec_SEARCH
 }
 
-func (m *DeleteSchemaParams) GetIndexSpec() []*IndexSpec {
-	if m != nil {
-		return m.IndexSpec
+func (x *DeleteSchemaParams) GetIndexSpec() []*IndexSpec {
+	if x != nil {
+		return x.IndexSpec
 	}
 	return nil
 }
 
 type DeleteSchemaRequest struct {
-	Params               *DeleteSchemaParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"`
-	AppId                []byte              `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DeleteSchemaRequest) Reset()         { *m = DeleteSchemaRequest{} }
-func (m *DeleteSchemaRequest) String() string { return proto.CompactTextString(m) }
-func (*DeleteSchemaRequest) ProtoMessage()    {}
-func (*DeleteSchemaRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{28}
-}
-func (m *DeleteSchemaRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteSchemaRequest.Unmarshal(m, b)
-}
-func (m *DeleteSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteSchemaRequest.Marshal(b, m, deterministic)
+	Params *DeleteSchemaParams `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
+	AppId  []byte              `protobuf:"bytes,3,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
 }
-func (dst *DeleteSchemaRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteSchemaRequest.Merge(dst, src)
+
+func (x *DeleteSchemaRequest) Reset() {
+	*x = DeleteSchemaRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[28]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DeleteSchemaRequest) XXX_Size() int {
-	return xxx_messageInfo_DeleteSchemaRequest.Size(m)
+
+func (x *DeleteSchemaRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DeleteSchemaRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteSchemaRequest.DiscardUnknown(m)
+
+func (*DeleteSchemaRequest) ProtoMessage() {}
+
+func (x *DeleteSchemaRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_DeleteSchemaRequest proto.InternalMessageInfo
+// Deprecated: Use DeleteSchemaRequest.ProtoReflect.Descriptor instead.
+func (*DeleteSchemaRequest) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{28}
+}
 
-func (m *DeleteSchemaRequest) GetParams() *DeleteSchemaParams {
-	if m != nil {
-		return m.Params
+func (x *DeleteSchemaRequest) GetParams() *DeleteSchemaParams {
+	if x != nil {
+		return x.Params
 	}
 	return nil
 }
 
-func (m *DeleteSchemaRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *DeleteSchemaRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
 type DeleteSchemaResponse struct {
-	Status               []*RequestStatus `protobuf:"bytes,1,rep,name=status" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *DeleteSchemaResponse) Reset()         { *m = DeleteSchemaResponse{} }
-func (m *DeleteSchemaResponse) String() string { return proto.CompactTextString(m) }
-func (*DeleteSchemaResponse) ProtoMessage()    {}
-func (*DeleteSchemaResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{29}
-}
-func (m *DeleteSchemaResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteSchemaResponse.Unmarshal(m, b)
+	Status []*RequestStatus `protobuf:"bytes,1,rep,name=status,proto3" json:"status,omitempty"`
 }
-func (m *DeleteSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteSchemaResponse.Marshal(b, m, deterministic)
-}
-func (dst *DeleteSchemaResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteSchemaResponse.Merge(dst, src)
+
+func (x *DeleteSchemaResponse) Reset() {
+	*x = DeleteSchemaResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[29]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *DeleteSchemaResponse) XXX_Size() int {
-	return xxx_messageInfo_DeleteSchemaResponse.Size(m)
+
+func (x *DeleteSchemaResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *DeleteSchemaResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteSchemaResponse.DiscardUnknown(m)
+
+func (*DeleteSchemaResponse) ProtoMessage() {}
+
+func (x *DeleteSchemaResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_DeleteSchemaResponse proto.InternalMessageInfo
+// Deprecated: Use DeleteSchemaResponse.ProtoReflect.Descriptor instead.
+func (*DeleteSchemaResponse) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{29}
+}
 
-func (m *DeleteSchemaResponse) GetStatus() []*RequestStatus {
-	if m != nil {
-		return m.Status
+func (x *DeleteSchemaResponse) GetStatus() []*RequestStatus {
+	if x != nil {
+		return x.Status
 	}
 	return nil
 }
 
 type SortSpec struct {
-	SortExpression       *string  `protobuf:"bytes,1,req,name=sort_expression,json=sortExpression" json:"sort_expression,omitempty"`
-	SortDescending       *bool    `protobuf:"varint,2,opt,name=sort_descending,json=sortDescending,def=1" json:"sort_descending,omitempty"`
-	DefaultValueText     *string  `protobuf:"bytes,4,opt,name=default_value_text,json=defaultValueText" json:"default_value_text,omitempty"`
-	DefaultValueNumeric  *float64 `protobuf:"fixed64,5,opt,name=default_value_numeric,json=defaultValueNumeric" json:"default_value_numeric,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SortSpec) Reset()         { *m = SortSpec{} }
-func (m *SortSpec) String() string { return proto.CompactTextString(m) }
-func (*SortSpec) ProtoMessage()    {}
-func (*SortSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{30}
-}
-func (m *SortSpec) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SortSpec.Unmarshal(m, b)
-}
-func (m *SortSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SortSpec.Marshal(b, m, deterministic)
-}
-func (dst *SortSpec) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SortSpec.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SortExpression      string   `protobuf:"bytes,1,opt,name=sort_expression,json=sortExpression,proto3" json:"sort_expression,omitempty"`
+	SortDescending      *bool    `protobuf:"varint,2,opt,name=sort_descending,json=sortDescending,proto3,oneof" json:"sort_descending,omitempty"`
+	DefaultValueText    *string  `protobuf:"bytes,4,opt,name=default_value_text,json=defaultValueText,proto3,oneof" json:"default_value_text,omitempty"`
+	DefaultValueNumeric *float64 `protobuf:"fixed64,5,opt,name=default_value_numeric,json=defaultValueNumeric,proto3,oneof" json:"default_value_numeric,omitempty"`
 }
-func (m *SortSpec) XXX_Size() int {
-	return xxx_messageInfo_SortSpec.Size(m)
+
+func (x *SortSpec) Reset() {
+	*x = SortSpec{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[30]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SortSpec) XXX_DiscardUnknown() {
-	xxx_messageInfo_SortSpec.DiscardUnknown(m)
+
+func (x *SortSpec) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_SortSpec proto.InternalMessageInfo
+func (*SortSpec) ProtoMessage() {}
 
-const Default_SortSpec_SortDescending bool = true
+func (x *SortSpec) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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 SortSpec.ProtoReflect.Descriptor instead.
+func (*SortSpec) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{30}
+}
 
-func (m *SortSpec) GetSortExpression() string {
-	if m != nil && m.SortExpression != nil {
-		return *m.SortExpression
+func (x *SortSpec) GetSortExpression() string {
+	if x != nil {
+		return x.SortExpression
 	}
 	return ""
 }
 
-func (m *SortSpec) GetSortDescending() bool {
-	if m != nil && m.SortDescending != nil {
-		return *m.SortDescending
+func (x *SortSpec) GetSortDescending() bool {
+	if x != nil && x.SortDescending != nil {
+		return *x.SortDescending
 	}
-	return Default_SortSpec_SortDescending
+	return false
 }
 
-func (m *SortSpec) GetDefaultValueText() string {
-	if m != nil && m.DefaultValueText != nil {
-		return *m.DefaultValueText
+func (x *SortSpec) GetDefaultValueText() string {
+	if x != nil && x.DefaultValueText != nil {
+		return *x.DefaultValueText
 	}
 	return ""
 }
 
-func (m *SortSpec) GetDefaultValueNumeric() float64 {
-	if m != nil && m.DefaultValueNumeric != nil {
-		return *m.DefaultValueNumeric
+func (x *SortSpec) GetDefaultValueNumeric() float64 {
+	if x != nil && x.DefaultValueNumeric != nil {
+		return *x.DefaultValueNumeric
 	}
 	return 0
 }
 
 type ScorerSpec struct {
-	Scorer                *ScorerSpec_Scorer `protobuf:"varint,1,opt,name=scorer,enum=search.ScorerSpec_Scorer,def=2" json:"scorer,omitempty"`
-	Limit                 *int32             `protobuf:"varint,2,opt,name=limit,def=1000" json:"limit,omitempty"`
-	MatchScorerParameters *string            `protobuf:"bytes,9,opt,name=match_scorer_parameters,json=matchScorerParameters" json:"match_scorer_parameters,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{}           `json:"-"`
-	XXX_unrecognized      []byte             `json:"-"`
-	XXX_sizecache         int32              `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ScorerSpec) Reset()         { *m = ScorerSpec{} }
-func (m *ScorerSpec) String() string { return proto.CompactTextString(m) }
-func (*ScorerSpec) ProtoMessage()    {}
-func (*ScorerSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{31}
-}
-func (m *ScorerSpec) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ScorerSpec.Unmarshal(m, b)
+	Scorer                *ScorerSpec_Scorer `protobuf:"varint,1,opt,name=scorer,proto3,enum=search.ScorerSpec_Scorer,oneof" json:"scorer,omitempty"`
+	Limit                 *int32             `protobuf:"varint,2,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
+	MatchScorerParameters *string            `protobuf:"bytes,9,opt,name=match_scorer_parameters,json=matchScorerParameters,proto3,oneof" json:"match_scorer_parameters,omitempty"`
 }
-func (m *ScorerSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ScorerSpec.Marshal(b, m, deterministic)
-}
-func (dst *ScorerSpec) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ScorerSpec.Merge(dst, src)
-}
-func (m *ScorerSpec) XXX_Size() int {
-	return xxx_messageInfo_ScorerSpec.Size(m)
+
+func (x *ScorerSpec) Reset() {
+	*x = ScorerSpec{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[31]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ScorerSpec) XXX_DiscardUnknown() {
-	xxx_messageInfo_ScorerSpec.DiscardUnknown(m)
+
+func (x *ScorerSpec) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ScorerSpec proto.InternalMessageInfo
+func (*ScorerSpec) ProtoMessage() {}
 
-const Default_ScorerSpec_Scorer ScorerSpec_Scorer = ScorerSpec_MATCH_SCORER
-const Default_ScorerSpec_Limit int32 = 1000
+func (x *ScorerSpec) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
+}
 
-func (m *ScorerSpec) GetScorer() ScorerSpec_Scorer {
-	if m != nil && m.Scorer != nil {
-		return *m.Scorer
+// Deprecated: Use ScorerSpec.ProtoReflect.Descriptor instead.
+func (*ScorerSpec) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *ScorerSpec) GetScorer() ScorerSpec_Scorer {
+	if x != nil && x.Scorer != nil {
+		return *x.Scorer
 	}
-	return Default_ScorerSpec_Scorer
+	return ScorerSpec_RESCORING_MATCH_SCORER
 }
 
-func (m *ScorerSpec) GetLimit() int32 {
-	if m != nil && m.Limit != nil {
-		return *m.Limit
+func (x *ScorerSpec) GetLimit() int32 {
+	if x != nil && x.Limit != nil {
+		return *x.Limit
 	}
-	return Default_ScorerSpec_Limit
+	return 0
 }
 
-func (m *ScorerSpec) GetMatchScorerParameters() string {
-	if m != nil && m.MatchScorerParameters != nil {
-		return *m.MatchScorerParameters
+func (x *ScorerSpec) GetMatchScorerParameters() string {
+	if x != nil && x.MatchScorerParameters != nil {
+		return *x.MatchScorerParameters
 	}
 	return ""
 }
 
 type FieldSpec struct {
-	Name                 []string                `protobuf:"bytes,1,rep,name=name" json:"name,omitempty"`
-	Expression           []*FieldSpec_Expression `protobuf:"group,2,rep,name=Expression,json=expression" json:"expression,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FieldSpec) Reset()         { *m = FieldSpec{} }
-func (m *FieldSpec) String() string { return proto.CompactTextString(m) }
-func (*FieldSpec) ProtoMessage()    {}
-func (*FieldSpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{32}
-}
-func (m *FieldSpec) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldSpec.Unmarshal(m, b)
+	Name       []string                    `protobuf:"bytes,1,rep,name=name,proto3" json:"name,omitempty"`
+	Expression []*FieldSpec_ExpressionType `protobuf:"bytes,2,rep,name=Expression,proto3" json:"Expression,omitempty"`
 }
-func (m *FieldSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldSpec.Marshal(b, m, deterministic)
-}
-func (dst *FieldSpec) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldSpec.Merge(dst, src)
+
+func (x *FieldSpec) Reset() {
+	*x = FieldSpec{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[32]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FieldSpec) XXX_Size() int {
-	return xxx_messageInfo_FieldSpec.Size(m)
+
+func (x *FieldSpec) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *FieldSpec) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldSpec.DiscardUnknown(m)
+
+func (*FieldSpec) ProtoMessage() {}
+
+func (x *FieldSpec) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_FieldSpec proto.InternalMessageInfo
+// Deprecated: Use FieldSpec.ProtoReflect.Descriptor instead.
+func (*FieldSpec) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{32}
+}
 
-func (m *FieldSpec) GetName() []string {
-	if m != nil {
-		return m.Name
+func (x *FieldSpec) GetName() []string {
+	if x != nil {
+		return x.Name
 	}
 	return nil
 }
 
-func (m *FieldSpec) GetExpression() []*FieldSpec_Expression {
-	if m != nil {
-		return m.Expression
+func (x *FieldSpec) GetExpression() []*FieldSpec_ExpressionType {
+	if x != nil {
+		return x.Expression
 	}
 	return nil
 }
 
-type FieldSpec_Expression struct {
-	Name                 *string  `protobuf:"bytes,3,req,name=name" json:"name,omitempty"`
-	Expression           *string  `protobuf:"bytes,4,req,name=expression" json:"expression,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type FacetRange struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FieldSpec_Expression) Reset()         { *m = FieldSpec_Expression{} }
-func (m *FieldSpec_Expression) String() string { return proto.CompactTextString(m) }
-func (*FieldSpec_Expression) ProtoMessage()    {}
-func (*FieldSpec_Expression) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{32, 0}
-}
-func (m *FieldSpec_Expression) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FieldSpec_Expression.Unmarshal(m, b)
+	Name  *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"`
+	Start *string `protobuf:"bytes,2,opt,name=start,proto3,oneof" json:"start,omitempty"`
+	End   *string `protobuf:"bytes,3,opt,name=end,proto3,oneof" json:"end,omitempty"`
 }
-func (m *FieldSpec_Expression) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FieldSpec_Expression.Marshal(b, m, deterministic)
-}
-func (dst *FieldSpec_Expression) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FieldSpec_Expression.Merge(dst, src)
-}
-func (m *FieldSpec_Expression) XXX_Size() int {
-	return xxx_messageInfo_FieldSpec_Expression.Size(m)
-}
-func (m *FieldSpec_Expression) XXX_DiscardUnknown() {
-	xxx_messageInfo_FieldSpec_Expression.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FieldSpec_Expression proto.InternalMessageInfo
 
-func (m *FieldSpec_Expression) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *FacetRange) Reset() {
+	*x = FacetRange{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[33]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-func (m *FieldSpec_Expression) GetExpression() string {
-	if m != nil && m.Expression != nil {
-		return *m.Expression
-	}
-	return ""
+func (x *FacetRange) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-type FacetRange struct {
-	Name                 *string  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Start                *string  `protobuf:"bytes,2,opt,name=start" json:"start,omitempty"`
-	End                  *string  `protobuf:"bytes,3,opt,name=end" json:"end,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (*FacetRange) ProtoMessage() {}
+
+func (x *FacetRange) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-func (m *FacetRange) Reset()         { *m = FacetRange{} }
-func (m *FacetRange) String() string { return proto.CompactTextString(m) }
-func (*FacetRange) ProtoMessage()    {}
+// Deprecated: Use FacetRange.ProtoReflect.Descriptor instead.
 func (*FacetRange) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{33}
+	return file_search_proto_rawDescGZIP(), []int{33}
 }
-func (m *FacetRange) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FacetRange.Unmarshal(m, b)
-}
-func (m *FacetRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FacetRange.Marshal(b, m, deterministic)
-}
-func (dst *FacetRange) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FacetRange.Merge(dst, src)
-}
-func (m *FacetRange) XXX_Size() int {
-	return xxx_messageInfo_FacetRange.Size(m)
-}
-func (m *FacetRange) XXX_DiscardUnknown() {
-	xxx_messageInfo_FacetRange.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FacetRange proto.InternalMessageInfo
 
-func (m *FacetRange) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *FacetRange) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
 	}
 	return ""
 }
 
-func (m *FacetRange) GetStart() string {
-	if m != nil && m.Start != nil {
-		return *m.Start
+func (x *FacetRange) GetStart() string {
+	if x != nil && x.Start != nil {
+		return *x.Start
 	}
 	return ""
 }
 
-func (m *FacetRange) GetEnd() string {
-	if m != nil && m.End != nil {
-		return *m.End
+func (x *FacetRange) GetEnd() string {
+	if x != nil && x.End != nil {
+		return *x.End
 	}
 	return ""
 }
 
 type FacetRequestParam struct {
-	ValueLimit           *int32        `protobuf:"varint,1,opt,name=value_limit,json=valueLimit" json:"value_limit,omitempty"`
-	Range                []*FacetRange `protobuf:"bytes,2,rep,name=range" json:"range,omitempty"`
-	ValueConstraint      []string      `protobuf:"bytes,3,rep,name=value_constraint,json=valueConstraint" json:"value_constraint,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FacetRequestParam) Reset()         { *m = FacetRequestParam{} }
-func (m *FacetRequestParam) String() string { return proto.CompactTextString(m) }
-func (*FacetRequestParam) ProtoMessage()    {}
-func (*FacetRequestParam) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{34}
-}
-func (m *FacetRequestParam) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FacetRequestParam.Unmarshal(m, b)
+	ValueLimit      *int32        `protobuf:"varint,1,opt,name=value_limit,json=valueLimit,proto3,oneof" json:"value_limit,omitempty"`
+	Range           []*FacetRange `protobuf:"bytes,2,rep,name=range,proto3" json:"range,omitempty"`
+	ValueConstraint []string      `protobuf:"bytes,3,rep,name=value_constraint,json=valueConstraint,proto3" json:"value_constraint,omitempty"`
 }
-func (m *FacetRequestParam) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FacetRequestParam.Marshal(b, m, deterministic)
-}
-func (dst *FacetRequestParam) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FacetRequestParam.Merge(dst, src)
+
+func (x *FacetRequestParam) Reset() {
+	*x = FacetRequestParam{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[34]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FacetRequestParam) XXX_Size() int {
-	return xxx_messageInfo_FacetRequestParam.Size(m)
+
+func (x *FacetRequestParam) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *FacetRequestParam) XXX_DiscardUnknown() {
-	xxx_messageInfo_FacetRequestParam.DiscardUnknown(m)
+
+func (*FacetRequestParam) ProtoMessage() {}
+
+func (x *FacetRequestParam) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_FacetRequestParam proto.InternalMessageInfo
+// Deprecated: Use FacetRequestParam.ProtoReflect.Descriptor instead.
+func (*FacetRequestParam) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{34}
+}
 
-func (m *FacetRequestParam) GetValueLimit() int32 {
-	if m != nil && m.ValueLimit != nil {
-		return *m.ValueLimit
+func (x *FacetRequestParam) GetValueLimit() int32 {
+	if x != nil && x.ValueLimit != nil {
+		return *x.ValueLimit
 	}
 	return 0
 }
 
-func (m *FacetRequestParam) GetRange() []*FacetRange {
-	if m != nil {
-		return m.Range
+func (x *FacetRequestParam) GetRange() []*FacetRange {
+	if x != nil {
+		return x.Range
 	}
 	return nil
 }
 
-func (m *FacetRequestParam) GetValueConstraint() []string {
-	if m != nil {
-		return m.ValueConstraint
+func (x *FacetRequestParam) GetValueConstraint() []string {
+	if x != nil {
+		return x.ValueConstraint
 	}
 	return nil
 }
 
 type FacetAutoDetectParam struct {
-	ValueLimit           *int32   `protobuf:"varint,1,opt,name=value_limit,json=valueLimit,def=10" json:"value_limit,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FacetAutoDetectParam) Reset()         { *m = FacetAutoDetectParam{} }
-func (m *FacetAutoDetectParam) String() string { return proto.CompactTextString(m) }
-func (*FacetAutoDetectParam) ProtoMessage()    {}
-func (*FacetAutoDetectParam) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{35}
-}
-func (m *FacetAutoDetectParam) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FacetAutoDetectParam.Unmarshal(m, b)
-}
-func (m *FacetAutoDetectParam) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FacetAutoDetectParam.Marshal(b, m, deterministic)
-}
-func (dst *FacetAutoDetectParam) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FacetAutoDetectParam.Merge(dst, src)
+	ValueLimit *int32 `protobuf:"varint,1,opt,name=value_limit,json=valueLimit,proto3,oneof" json:"value_limit,omitempty"`
 }
-func (m *FacetAutoDetectParam) XXX_Size() int {
-	return xxx_messageInfo_FacetAutoDetectParam.Size(m)
-}
-func (m *FacetAutoDetectParam) XXX_DiscardUnknown() {
-	xxx_messageInfo_FacetAutoDetectParam.DiscardUnknown(m)
+
+func (x *FacetAutoDetectParam) Reset() {
+	*x = FacetAutoDetectParam{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[35]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-var xxx_messageInfo_FacetAutoDetectParam proto.InternalMessageInfo
+func (x *FacetAutoDetectParam) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
 
-const Default_FacetAutoDetectParam_ValueLimit int32 = 10
+func (*FacetAutoDetectParam) ProtoMessage() {}
 
-func (m *FacetAutoDetectParam) GetValueLimit() int32 {
-	if m != nil && m.ValueLimit != nil {
-		return *m.ValueLimit
+func (x *FacetAutoDetectParam) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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 Default_FacetAutoDetectParam_ValueLimit
+	return mi.MessageOf(x)
 }
 
-type FacetRequest struct {
-	Name                 *string            `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	Params               *FacetRequestParam `protobuf:"bytes,2,opt,name=params" json:"params,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+// Deprecated: Use FacetAutoDetectParam.ProtoReflect.Descriptor instead.
+func (*FacetAutoDetectParam) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{35}
 }
 
-func (m *FacetRequest) Reset()         { *m = FacetRequest{} }
-func (m *FacetRequest) String() string { return proto.CompactTextString(m) }
-func (*FacetRequest) ProtoMessage()    {}
-func (*FacetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{36}
-}
-func (m *FacetRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FacetRequest.Unmarshal(m, b)
+func (x *FacetAutoDetectParam) GetValueLimit() int32 {
+	if x != nil && x.ValueLimit != nil {
+		return *x.ValueLimit
+	}
+	return 0
 }
-func (m *FacetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FacetRequest.Marshal(b, m, deterministic)
+
+type FacetRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name   string             `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Params *FacetRequestParam `protobuf:"bytes,2,opt,name=params,proto3,oneof" json:"params,omitempty"`
 }
-func (dst *FacetRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FacetRequest.Merge(dst, src)
+
+func (x *FacetRequest) Reset() {
+	*x = FacetRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[36]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FacetRequest) XXX_Size() int {
-	return xxx_messageInfo_FacetRequest.Size(m)
+
+func (x *FacetRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *FacetRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_FacetRequest.DiscardUnknown(m)
+
+func (*FacetRequest) ProtoMessage() {}
+
+func (x *FacetRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_FacetRequest proto.InternalMessageInfo
+// Deprecated: Use FacetRequest.ProtoReflect.Descriptor instead.
+func (*FacetRequest) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{36}
+}
 
-func (m *FacetRequest) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *FacetRequest) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *FacetRequest) GetParams() *FacetRequestParam {
-	if m != nil {
-		return m.Params
+func (x *FacetRequest) GetParams() *FacetRequestParam {
+	if x != nil {
+		return x.Params
 	}
 	return nil
 }
 
 type FacetRefinement struct {
-	Name                 *string                `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	Value                *string                `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
-	Range                *FacetRefinement_Range `protobuf:"bytes,3,opt,name=range" json:"range,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FacetRefinement) Reset()         { *m = FacetRefinement{} }
-func (m *FacetRefinement) String() string { return proto.CompactTextString(m) }
-func (*FacetRefinement) ProtoMessage()    {}
-func (*FacetRefinement) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{37}
+	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Value *string                `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"`
+	Range *FacetRefinement_Range `protobuf:"bytes,3,opt,name=range,proto3,oneof" json:"range,omitempty"`
 }
-func (m *FacetRefinement) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FacetRefinement.Unmarshal(m, b)
-}
-func (m *FacetRefinement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FacetRefinement.Marshal(b, m, deterministic)
-}
-func (dst *FacetRefinement) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FacetRefinement.Merge(dst, src)
+
+func (x *FacetRefinement) Reset() {
+	*x = FacetRefinement{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[37]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FacetRefinement) XXX_Size() int {
-	return xxx_messageInfo_FacetRefinement.Size(m)
+
+func (x *FacetRefinement) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *FacetRefinement) XXX_DiscardUnknown() {
-	xxx_messageInfo_FacetRefinement.DiscardUnknown(m)
+
+func (*FacetRefinement) ProtoMessage() {}
+
+func (x *FacetRefinement) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_FacetRefinement proto.InternalMessageInfo
+// Deprecated: Use FacetRefinement.ProtoReflect.Descriptor instead.
+func (*FacetRefinement) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{37}
+}
 
-func (m *FacetRefinement) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *FacetRefinement) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *FacetRefinement) GetValue() string {
-	if m != nil && m.Value != nil {
-		return *m.Value
+func (x *FacetRefinement) GetValue() string {
+	if x != nil && x.Value != nil {
+		return *x.Value
 	}
 	return ""
 }
 
-func (m *FacetRefinement) GetRange() *FacetRefinement_Range {
-	if m != nil {
-		return m.Range
+func (x *FacetRefinement) GetRange() *FacetRefinement_Range {
+	if x != nil {
+		return x.Range
 	}
 	return nil
 }
 
-type FacetRefinement_Range struct {
-	Start                *string  `protobuf:"bytes,1,opt,name=start" json:"start,omitempty"`
-	End                  *string  `protobuf:"bytes,2,opt,name=end" json:"end,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type SearchParams struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FacetRefinement_Range) Reset()         { *m = FacetRefinement_Range{} }
-func (m *FacetRefinement_Range) String() string { return proto.CompactTextString(m) }
-func (*FacetRefinement_Range) ProtoMessage()    {}
-func (*FacetRefinement_Range) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{37, 0}
-}
-func (m *FacetRefinement_Range) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FacetRefinement_Range.Unmarshal(m, b)
-}
-func (m *FacetRefinement_Range) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FacetRefinement_Range.Marshal(b, m, deterministic)
-}
-func (dst *FacetRefinement_Range) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FacetRefinement_Range.Merge(dst, src)
-}
-func (m *FacetRefinement_Range) XXX_Size() int {
-	return xxx_messageInfo_FacetRefinement_Range.Size(m)
+	IndexSpec              *IndexSpec                `protobuf:"bytes,1,opt,name=index_spec,json=indexSpec,proto3" json:"index_spec,omitempty"`
+	Query                  string                    `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"`
+	Cursor                 *string                   `protobuf:"bytes,4,opt,name=cursor,proto3,oneof" json:"cursor,omitempty"`
+	Offset                 *int32                    `protobuf:"varint,11,opt,name=offset,proto3,oneof" json:"offset,omitempty"`
+	CursorType             *SearchParams_CursorType  `protobuf:"varint,5,opt,name=cursor_type,json=cursorType,proto3,enum=search.SearchParams_CursorType,oneof" json:"cursor_type,omitempty"`
+	Limit                  *int32                    `protobuf:"varint,6,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
+	MatchedCountAccuracy   *int32                    `protobuf:"varint,7,opt,name=matched_count_accuracy,json=matchedCountAccuracy,proto3,oneof" json:"matched_count_accuracy,omitempty"`
+	SortSpec               []*SortSpec               `protobuf:"bytes,8,rep,name=sort_spec,json=sortSpec,proto3" json:"sort_spec,omitempty"`
+	ScorerSpec             *ScorerSpec               `protobuf:"bytes,9,opt,name=scorer_spec,json=scorerSpec,proto3,oneof" json:"scorer_spec,omitempty"`
+	FieldSpec              *FieldSpec                `protobuf:"bytes,10,opt,name=field_spec,json=fieldSpec,proto3,oneof" json:"field_spec,omitempty"`
+	KeysOnly               *bool                     `protobuf:"varint,12,opt,name=keys_only,json=keysOnly,proto3,oneof" json:"keys_only,omitempty"`
+	ParsingMode            *SearchParams_ParsingMode `protobuf:"varint,13,opt,name=parsing_mode,json=parsingMode,proto3,enum=search.SearchParams_ParsingMode,oneof" json:"parsing_mode,omitempty"`
+	AutoDiscoverFacetCount *int32                    `protobuf:"varint,15,opt,name=auto_discover_facet_count,json=autoDiscoverFacetCount,proto3,oneof" json:"auto_discover_facet_count,omitempty"`
+	IncludeFacet           []*FacetRequest           `protobuf:"bytes,16,rep,name=include_facet,json=includeFacet,proto3" json:"include_facet,omitempty"`
+	FacetRefinement        []*FacetRefinement        `protobuf:"bytes,17,rep,name=facet_refinement,json=facetRefinement,proto3" json:"facet_refinement,omitempty"`
+	FacetAutoDetectParam   *FacetAutoDetectParam     `protobuf:"bytes,18,opt,name=facet_auto_detect_param,json=facetAutoDetectParam,proto3,oneof" json:"facet_auto_detect_param,omitempty"`
+	FacetDepth             *int32                    `protobuf:"varint,19,opt,name=facet_depth,json=facetDepth,proto3,oneof" json:"facet_depth,omitempty"`
 }
-func (m *FacetRefinement_Range) XXX_DiscardUnknown() {
-	xxx_messageInfo_FacetRefinement_Range.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FacetRefinement_Range proto.InternalMessageInfo
 
-func (m *FacetRefinement_Range) GetStart() string {
-	if m != nil && m.Start != nil {
-		return *m.Start
+func (x *SearchParams) Reset() {
+	*x = SearchParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[38]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-func (m *FacetRefinement_Range) GetEnd() string {
-	if m != nil && m.End != nil {
-		return *m.End
+func (x *SearchParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SearchParams) ProtoMessage() {}
+
+func (x *SearchParams) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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 ""
+	return mi.MessageOf(x)
 }
 
-type SearchParams struct {
-	IndexSpec              *IndexSpec                `protobuf:"bytes,1,req,name=index_spec,json=indexSpec" json:"index_spec,omitempty"`
-	Query                  *string                   `protobuf:"bytes,2,req,name=query" json:"query,omitempty"`
-	Cursor                 *string                   `protobuf:"bytes,4,opt,name=cursor" json:"cursor,omitempty"`
-	Offset                 *int32                    `protobuf:"varint,11,opt,name=offset" json:"offset,omitempty"`
-	CursorType             *SearchParams_CursorType  `protobuf:"varint,5,opt,name=cursor_type,json=cursorType,enum=search.SearchParams_CursorType,def=0" json:"cursor_type,omitempty"`
-	Limit                  *int32                    `protobuf:"varint,6,opt,name=limit,def=20" json:"limit,omitempty"`
-	MatchedCountAccuracy   *int32                    `protobuf:"varint,7,opt,name=matched_count_accuracy,json=matchedCountAccuracy" json:"matched_count_accuracy,omitempty"`
-	SortSpec               []*SortSpec               `protobuf:"bytes,8,rep,name=sort_spec,json=sortSpec" json:"sort_spec,omitempty"`
-	ScorerSpec             *ScorerSpec               `protobuf:"bytes,9,opt,name=scorer_spec,json=scorerSpec" json:"scorer_spec,omitempty"`
-	FieldSpec              *FieldSpec                `protobuf:"bytes,10,opt,name=field_spec,json=fieldSpec" json:"field_spec,omitempty"`
-	KeysOnly               *bool                     `protobuf:"varint,12,opt,name=keys_only,json=keysOnly" json:"keys_only,omitempty"`
-	ParsingMode            *SearchParams_ParsingMode `protobuf:"varint,13,opt,name=parsing_mode,json=parsingMode,enum=search.SearchParams_ParsingMode,def=0" json:"parsing_mode,omitempty"`
-	AutoDiscoverFacetCount *int32                    `protobuf:"varint,15,opt,name=auto_discover_facet_count,json=autoDiscoverFacetCount,def=0" json:"auto_discover_facet_count,omitempty"`
-	IncludeFacet           []*FacetRequest           `protobuf:"bytes,16,rep,name=include_facet,json=includeFacet" json:"include_facet,omitempty"`
-	FacetRefinement        []*FacetRefinement        `protobuf:"bytes,17,rep,name=facet_refinement,json=facetRefinement" json:"facet_refinement,omitempty"`
-	FacetAutoDetectParam   *FacetAutoDetectParam     `protobuf:"bytes,18,opt,name=facet_auto_detect_param,json=facetAutoDetectParam" json:"facet_auto_detect_param,omitempty"`
-	FacetDepth             *int32                    `protobuf:"varint,19,opt,name=facet_depth,json=facetDepth,def=1000" json:"facet_depth,omitempty"`
-	XXX_NoUnkeyedLiteral   struct{}                  `json:"-"`
-	XXX_unrecognized       []byte                    `json:"-"`
-	XXX_sizecache          int32                     `json:"-"`
-}
-
-func (m *SearchParams) Reset()         { *m = SearchParams{} }
-func (m *SearchParams) String() string { return proto.CompactTextString(m) }
-func (*SearchParams) ProtoMessage()    {}
+// Deprecated: Use SearchParams.ProtoReflect.Descriptor instead.
 func (*SearchParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{38}
-}
-func (m *SearchParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SearchParams.Unmarshal(m, b)
-}
-func (m *SearchParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SearchParams.Marshal(b, m, deterministic)
-}
-func (dst *SearchParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SearchParams.Merge(dst, src)
+	return file_search_proto_rawDescGZIP(), []int{38}
 }
-func (m *SearchParams) XXX_Size() int {
-	return xxx_messageInfo_SearchParams.Size(m)
-}
-func (m *SearchParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_SearchParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SearchParams proto.InternalMessageInfo
 
-const Default_SearchParams_CursorType SearchParams_CursorType = SearchParams_NONE
-const Default_SearchParams_Limit int32 = 20
-const Default_SearchParams_ParsingMode SearchParams_ParsingMode = SearchParams_STRICT
-const Default_SearchParams_AutoDiscoverFacetCount int32 = 0
-const Default_SearchParams_FacetDepth int32 = 1000
-
-func (m *SearchParams) GetIndexSpec() *IndexSpec {
-	if m != nil {
-		return m.IndexSpec
+func (x *SearchParams) GetIndexSpec() *IndexSpec {
+	if x != nil {
+		return x.IndexSpec
 	}
 	return nil
 }
 
-func (m *SearchParams) GetQuery() string {
-	if m != nil && m.Query != nil {
-		return *m.Query
+func (x *SearchParams) GetQuery() string {
+	if x != nil {
+		return x.Query
 	}
 	return ""
 }
 
-func (m *SearchParams) GetCursor() string {
-	if m != nil && m.Cursor != nil {
-		return *m.Cursor
+func (x *SearchParams) GetCursor() string {
+	if x != nil && x.Cursor != nil {
+		return *x.Cursor
 	}
 	return ""
 }
 
-func (m *SearchParams) GetOffset() int32 {
-	if m != nil && m.Offset != nil {
-		return *m.Offset
+func (x *SearchParams) GetOffset() int32 {
+	if x != nil && x.Offset != nil {
+		return *x.Offset
 	}
 	return 0
 }
 
-func (m *SearchParams) GetCursorType() SearchParams_CursorType {
-	if m != nil && m.CursorType != nil {
-		return *m.CursorType
+func (x *SearchParams) GetCursorType() SearchParams_CursorType {
+	if x != nil && x.CursorType != nil {
+		return *x.CursorType
 	}
-	return Default_SearchParams_CursorType
+	return SearchParams_NONE
 }
 
-func (m *SearchParams) GetLimit() int32 {
-	if m != nil && m.Limit != nil {
-		return *m.Limit
+func (x *SearchParams) GetLimit() int32 {
+	if x != nil && x.Limit != nil {
+		return *x.Limit
 	}
-	return Default_SearchParams_Limit
+	return 0
 }
 
-func (m *SearchParams) GetMatchedCountAccuracy() int32 {
-	if m != nil && m.MatchedCountAccuracy != nil {
-		return *m.MatchedCountAccuracy
+func (x *SearchParams) GetMatchedCountAccuracy() int32 {
+	if x != nil && x.MatchedCountAccuracy != nil {
+		return *x.MatchedCountAccuracy
 	}
 	return 0
 }
 
-func (m *SearchParams) GetSortSpec() []*SortSpec {
-	if m != nil {
-		return m.SortSpec
+func (x *SearchParams) GetSortSpec() []*SortSpec {
+	if x != nil {
+		return x.SortSpec
 	}
 	return nil
 }
 
-func (m *SearchParams) GetScorerSpec() *ScorerSpec {
-	if m != nil {
-		return m.ScorerSpec
+func (x *SearchParams) GetScorerSpec() *ScorerSpec {
+	if x != nil {
+		return x.ScorerSpec
 	}
 	return nil
 }
 
-func (m *SearchParams) GetFieldSpec() *FieldSpec {
-	if m != nil {
-		return m.FieldSpec
+func (x *SearchParams) GetFieldSpec() *FieldSpec {
+	if x != nil {
+		return x.FieldSpec
 	}
 	return nil
 }
 
-func (m *SearchParams) GetKeysOnly() bool {
-	if m != nil && m.KeysOnly != nil {
-		return *m.KeysOnly
+func (x *SearchParams) GetKeysOnly() bool {
+	if x != nil && x.KeysOnly != nil {
+		return *x.KeysOnly
 	}
 	return false
 }
 
-func (m *SearchParams) GetParsingMode() SearchParams_ParsingMode {
-	if m != nil && m.ParsingMode != nil {
-		return *m.ParsingMode
+func (x *SearchParams) GetParsingMode() SearchParams_ParsingMode {
+	if x != nil && x.ParsingMode != nil {
+		return *x.ParsingMode
 	}
-	return Default_SearchParams_ParsingMode
+	return SearchParams_STRICT
 }
 
-func (m *SearchParams) GetAutoDiscoverFacetCount() int32 {
-	if m != nil && m.AutoDiscoverFacetCount != nil {
-		return *m.AutoDiscoverFacetCount
+func (x *SearchParams) GetAutoDiscoverFacetCount() int32 {
+	if x != nil && x.AutoDiscoverFacetCount != nil {
+		return *x.AutoDiscoverFacetCount
 	}
-	return Default_SearchParams_AutoDiscoverFacetCount
+	return 0
 }
 
-func (m *SearchParams) GetIncludeFacet() []*FacetRequest {
-	if m != nil {
-		return m.IncludeFacet
+func (x *SearchParams) GetIncludeFacet() []*FacetRequest {
+	if x != nil {
+		return x.IncludeFacet
 	}
 	return nil
 }
 
-func (m *SearchParams) GetFacetRefinement() []*FacetRefinement {
-	if m != nil {
-		return m.FacetRefinement
+func (x *SearchParams) GetFacetRefinement() []*FacetRefinement {
+	if x != nil {
+		return x.FacetRefinement
 	}
 	return nil
 }
 
-func (m *SearchParams) GetFacetAutoDetectParam() *FacetAutoDetectParam {
-	if m != nil {
-		return m.FacetAutoDetectParam
+func (x *SearchParams) GetFacetAutoDetectParam() *FacetAutoDetectParam {
+	if x != nil {
+		return x.FacetAutoDetectParam
 	}
 	return nil
 }
 
-func (m *SearchParams) GetFacetDepth() int32 {
-	if m != nil && m.FacetDepth != nil {
-		return *m.FacetDepth
+func (x *SearchParams) GetFacetDepth() int32 {
+	if x != nil && x.FacetDepth != nil {
+		return *x.FacetDepth
 	}
-	return Default_SearchParams_FacetDepth
+	return 0
 }
 
 type SearchRequest struct {
-	Params               *SearchParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"`
-	AppId                []byte        `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *SearchRequest) Reset()         { *m = SearchRequest{} }
-func (m *SearchRequest) String() string { return proto.CompactTextString(m) }
-func (*SearchRequest) ProtoMessage()    {}
-func (*SearchRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{39}
+	Params *SearchParams `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
+	AppId  []byte        `protobuf:"bytes,3,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
 }
-func (m *SearchRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SearchRequest.Unmarshal(m, b)
-}
-func (m *SearchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SearchRequest.Marshal(b, m, deterministic)
-}
-func (dst *SearchRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SearchRequest.Merge(dst, src)
+
+func (x *SearchRequest) Reset() {
+	*x = SearchRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[39]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SearchRequest) XXX_Size() int {
-	return xxx_messageInfo_SearchRequest.Size(m)
+
+func (x *SearchRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SearchRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SearchRequest.DiscardUnknown(m)
+
+func (*SearchRequest) ProtoMessage() {}
+
+func (x *SearchRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_SearchRequest proto.InternalMessageInfo
+// Deprecated: Use SearchRequest.ProtoReflect.Descriptor instead.
+func (*SearchRequest) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{39}
+}
 
-func (m *SearchRequest) GetParams() *SearchParams {
-	if m != nil {
-		return m.Params
+func (x *SearchRequest) GetParams() *SearchParams {
+	if x != nil {
+		return x.Params
 	}
 	return nil
 }
 
-func (m *SearchRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *SearchRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
 type FacetResultValue struct {
-	Name                 *string          `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	Count                *int32           `protobuf:"varint,2,req,name=count" json:"count,omitempty"`
-	Refinement           *FacetRefinement `protobuf:"bytes,3,req,name=refinement" json:"refinement,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *FacetResultValue) Reset()         { *m = FacetResultValue{} }
-func (m *FacetResultValue) String() string { return proto.CompactTextString(m) }
-func (*FacetResultValue) ProtoMessage()    {}
-func (*FacetResultValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{40}
-}
-func (m *FacetResultValue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FacetResultValue.Unmarshal(m, b)
-}
-func (m *FacetResultValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FacetResultValue.Marshal(b, m, deterministic)
+	Name       string           `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Count      int32            `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
+	Refinement *FacetRefinement `protobuf:"bytes,3,opt,name=refinement,proto3" json:"refinement,omitempty"`
 }
-func (dst *FacetResultValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FacetResultValue.Merge(dst, src)
+
+func (x *FacetResultValue) Reset() {
+	*x = FacetResultValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[40]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FacetResultValue) XXX_Size() int {
-	return xxx_messageInfo_FacetResultValue.Size(m)
+
+func (x *FacetResultValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *FacetResultValue) XXX_DiscardUnknown() {
-	xxx_messageInfo_FacetResultValue.DiscardUnknown(m)
+
+func (*FacetResultValue) ProtoMessage() {}
+
+func (x *FacetResultValue) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_FacetResultValue proto.InternalMessageInfo
+// Deprecated: Use FacetResultValue.ProtoReflect.Descriptor instead.
+func (*FacetResultValue) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{40}
+}
 
-func (m *FacetResultValue) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *FacetResultValue) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *FacetResultValue) GetCount() int32 {
-	if m != nil && m.Count != nil {
-		return *m.Count
+func (x *FacetResultValue) GetCount() int32 {
+	if x != nil {
+		return x.Count
 	}
 	return 0
 }
 
-func (m *FacetResultValue) GetRefinement() *FacetRefinement {
-	if m != nil {
-		return m.Refinement
+func (x *FacetResultValue) GetRefinement() *FacetRefinement {
+	if x != nil {
+		return x.Refinement
 	}
 	return nil
 }
 
 type FacetResult struct {
-	Name                 *string             `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	Value                []*FacetResultValue `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name  string              `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Value []*FacetResultValue `protobuf:"bytes,2,rep,name=value,proto3" json:"value,omitempty"`
+}
+
+func (x *FacetResult) Reset() {
+	*x = FacetResult{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[41]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FacetResult) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FacetResult) ProtoMessage() {}
+
+func (x *FacetResult) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-func (m *FacetResult) Reset()         { *m = FacetResult{} }
-func (m *FacetResult) String() string { return proto.CompactTextString(m) }
-func (*FacetResult) ProtoMessage()    {}
+// Deprecated: Use FacetResult.ProtoReflect.Descriptor instead.
 func (*FacetResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{41}
+	return file_search_proto_rawDescGZIP(), []int{41}
 }
-func (m *FacetResult) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FacetResult.Unmarshal(m, b)
+
+func (x *FacetResult) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
 }
-func (m *FacetResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FacetResult.Marshal(b, m, deterministic)
+
+func (x *FacetResult) GetValue() []*FacetResultValue {
+	if x != nil {
+		return x.Value
+	}
+	return nil
 }
-func (dst *FacetResult) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FacetResult.Merge(dst, src)
+
+type SearchResult struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Document   *Document `protobuf:"bytes,1,opt,name=document,proto3" json:"document,omitempty"`
+	Expression []*Field  `protobuf:"bytes,4,rep,name=expression,proto3" json:"expression,omitempty"`
+	Score      []float64 `protobuf:"fixed64,2,rep,packed,name=score,proto3" json:"score,omitempty"`
+	Cursor     *string   `protobuf:"bytes,3,opt,name=cursor,proto3,oneof" json:"cursor,omitempty"`
 }
-func (m *FacetResult) XXX_Size() int {
-	return xxx_messageInfo_FacetResult.Size(m)
+
+func (x *SearchResult) Reset() {
+	*x = SearchResult{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[42]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *FacetResult) XXX_DiscardUnknown() {
-	xxx_messageInfo_FacetResult.DiscardUnknown(m)
+
+func (x *SearchResult) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_FacetResult proto.InternalMessageInfo
+func (*SearchResult) ProtoMessage() {}
 
-func (m *FacetResult) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *SearchResult) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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 ""
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SearchResult.ProtoReflect.Descriptor instead.
+func (*SearchResult) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{42}
 }
 
-func (m *FacetResult) GetValue() []*FacetResultValue {
-	if m != nil {
-		return m.Value
+func (x *SearchResult) GetDocument() *Document {
+	if x != nil {
+		return x.Document
 	}
 	return nil
 }
 
-type SearchResult struct {
-	Document             *Document `protobuf:"bytes,1,req,name=document" json:"document,omitempty"`
-	Expression           []*Field  `protobuf:"bytes,4,rep,name=expression" json:"expression,omitempty"`
-	Score                []float64 `protobuf:"fixed64,2,rep,name=score" json:"score,omitempty"`
-	Cursor               *string   `protobuf:"bytes,3,opt,name=cursor" json:"cursor,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *SearchResult) Reset()         { *m = SearchResult{} }
-func (m *SearchResult) String() string { return proto.CompactTextString(m) }
-func (*SearchResult) ProtoMessage()    {}
-func (*SearchResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{42}
+func (x *SearchResult) GetExpression() []*Field {
+	if x != nil {
+		return x.Expression
+	}
+	return nil
+}
+
+func (x *SearchResult) GetScore() []float64 {
+	if x != nil {
+		return x.Score
+	}
+	return nil
 }
-func (m *SearchResult) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SearchResult.Unmarshal(m, b)
+
+func (x *SearchResult) GetCursor() string {
+	if x != nil && x.Cursor != nil {
+		return *x.Cursor
+	}
+	return ""
 }
-func (m *SearchResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SearchResult.Marshal(b, m, deterministic)
+
+type SearchResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Result       []*SearchResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"`
+	MatchedCount int64           `protobuf:"varint,2,opt,name=matched_count,json=matchedCount,proto3" json:"matched_count,omitempty"`
+	Status       *RequestStatus  `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	Cursor       *string         `protobuf:"bytes,4,opt,name=cursor,proto3,oneof" json:"cursor,omitempty"`
+	FacetResult  []*FacetResult  `protobuf:"bytes,5,rep,name=facet_result,json=facetResult,proto3" json:"facet_result,omitempty"`
 }
-func (dst *SearchResult) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SearchResult.Merge(dst, src)
+
+func (x *SearchResponse) Reset() {
+	*x = SearchResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[43]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SearchResult) XXX_Size() int {
-	return xxx_messageInfo_SearchResult.Size(m)
+
+func (x *SearchResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SearchResult) XXX_DiscardUnknown() {
-	xxx_messageInfo_SearchResult.DiscardUnknown(m)
+
+func (*SearchResponse) ProtoMessage() {}
+
+func (x *SearchResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
 
-var xxx_messageInfo_SearchResult proto.InternalMessageInfo
+// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead.
+func (*SearchResponse) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{43}
+}
 
-func (m *SearchResult) GetDocument() *Document {
-	if m != nil {
-		return m.Document
+func (x *SearchResponse) GetResult() []*SearchResult {
+	if x != nil {
+		return x.Result
 	}
 	return nil
 }
 
-func (m *SearchResult) GetExpression() []*Field {
-	if m != nil {
-		return m.Expression
+func (x *SearchResponse) GetMatchedCount() int64 {
+	if x != nil {
+		return x.MatchedCount
 	}
-	return nil
+	return 0
 }
 
-func (m *SearchResult) GetScore() []float64 {
-	if m != nil {
-		return m.Score
+func (x *SearchResponse) GetStatus() *RequestStatus {
+	if x != nil {
+		return x.Status
 	}
 	return nil
 }
 
-func (m *SearchResult) GetCursor() string {
-	if m != nil && m.Cursor != nil {
-		return *m.Cursor
+func (x *SearchResponse) GetCursor() string {
+	if x != nil && x.Cursor != nil {
+		return *x.Cursor
 	}
 	return ""
 }
 
-type SearchResponse struct {
-	Result                       []*SearchResult `protobuf:"bytes,1,rep,name=result" json:"result,omitempty"`
-	MatchedCount                 *int64          `protobuf:"varint,2,req,name=matched_count,json=matchedCount" json:"matched_count,omitempty"`
-	Status                       *RequestStatus  `protobuf:"bytes,3,req,name=status" json:"status,omitempty"`
-	Cursor                       *string         `protobuf:"bytes,4,opt,name=cursor" json:"cursor,omitempty"`
-	FacetResult                  []*FacetResult  `protobuf:"bytes,5,rep,name=facet_result,json=facetResult" json:"facet_result,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}        `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
-}
-
-func (m *SearchResponse) Reset()         { *m = SearchResponse{} }
-func (m *SearchResponse) String() string { return proto.CompactTextString(m) }
-func (*SearchResponse) ProtoMessage()    {}
-func (*SearchResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_search_78ae5a87590ff3d8, []int{43}
+func (x *SearchResponse) GetFacetResult() []*FacetResult {
+	if x != nil {
+		return x.FacetResult
+	}
+	return nil
+}
+
+type FieldValue_GeoType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Lat float64 `protobuf:"fixed64,5,opt,name=lat,proto3" json:"lat,omitempty"`
+	Lng float64 `protobuf:"fixed64,6,opt,name=lng,proto3" json:"lng,omitempty"`
 }
 
-var extRange_SearchResponse = []proto.ExtensionRange{
-	{Start: 1000, End: 9999},
+func (x *FieldValue_GeoType) Reset() {
+	*x = FieldValue_GeoType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[44]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-func (*SearchResponse) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_SearchResponse
+func (x *FieldValue_GeoType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SearchResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SearchResponse.Unmarshal(m, b)
+
+func (*FieldValue_GeoType) ProtoMessage() {}
+
+func (x *FieldValue_GeoType) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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)
 }
-func (m *SearchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SearchResponse.Marshal(b, m, deterministic)
+
+// Deprecated: Use FieldValue_GeoType.ProtoReflect.Descriptor instead.
+func (*FieldValue_GeoType) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{3, 0}
 }
-func (dst *SearchResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SearchResponse.Merge(dst, src)
+
+func (x *FieldValue_GeoType) GetLat() float64 {
+	if x != nil {
+		return x.Lat
+	}
+	return 0
 }
-func (m *SearchResponse) XXX_Size() int {
-	return xxx_messageInfo_SearchResponse.Size(m)
+
+func (x *FieldValue_GeoType) GetLng() float64 {
+	if x != nil {
+		return x.Lng
+	}
+	return 0
 }
-func (m *SearchResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SearchResponse.DiscardUnknown(m)
+
+type IndexMetadata_Storage struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AmountUsed *int64 `protobuf:"varint,1,opt,name=amount_used,json=amountUsed,proto3,oneof" json:"amount_used,omitempty"`
+	Limit      *int64 `protobuf:"varint,2,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
 }
 
-var xxx_messageInfo_SearchResponse proto.InternalMessageInfo
+func (x *IndexMetadata_Storage) Reset() {
+	*x = IndexMetadata_Storage{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[45]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
 
-func (m *SearchResponse) GetResult() []*SearchResult {
-	if m != nil {
-		return m.Result
+func (x *IndexMetadata_Storage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IndexMetadata_Storage) ProtoMessage() {}
+
+func (x *IndexMetadata_Storage) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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 nil
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IndexMetadata_Storage.ProtoReflect.Descriptor instead.
+func (*IndexMetadata_Storage) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{14, 0}
 }
 
-func (m *SearchResponse) GetMatchedCount() int64 {
-	if m != nil && m.MatchedCount != nil {
-		return *m.MatchedCount
+func (x *IndexMetadata_Storage) GetAmountUsed() int64 {
+	if x != nil && x.AmountUsed != nil {
+		return *x.AmountUsed
 	}
 	return 0
 }
 
-func (m *SearchResponse) GetStatus() *RequestStatus {
-	if m != nil {
-		return m.Status
+func (x *IndexMetadata_Storage) GetLimit() int64 {
+	if x != nil && x.Limit != nil {
+		return *x.Limit
 	}
-	return nil
+	return 0
+}
+
+type FieldSpec_ExpressionType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name       string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+	Expression string `protobuf:"bytes,4,opt,name=expression,proto3" json:"expression,omitempty"`
 }
 
-func (m *SearchResponse) GetCursor() string {
-	if m != nil && m.Cursor != nil {
-		return *m.Cursor
+func (x *FieldSpec_ExpressionType) Reset() {
+	*x = FieldSpec_ExpressionType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[46]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FieldSpec_ExpressionType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FieldSpec_ExpressionType) ProtoMessage() {}
+
+func (x *FieldSpec_ExpressionType) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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 FieldSpec_ExpressionType.ProtoReflect.Descriptor instead.
+func (*FieldSpec_ExpressionType) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{32, 0}
+}
+
+func (x *FieldSpec_ExpressionType) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *SearchResponse) GetFacetResult() []*FacetResult {
-	if m != nil {
-		return m.FacetResult
+func (x *FieldSpec_ExpressionType) GetExpression() string {
+	if x != nil {
+		return x.Expression
 	}
-	return nil
+	return ""
+}
+
+type FacetRefinement_Range struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"`
+	End   *string `protobuf:"bytes,2,opt,name=end,proto3,oneof" json:"end,omitempty"`
+}
+
+func (x *FacetRefinement_Range) Reset() {
+	*x = FacetRefinement_Range{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_search_proto_msgTypes[47]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FacetRefinement_Range) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func init() {
-	proto.RegisterType((*Scope)(nil), "search.Scope")
-	proto.RegisterType((*Entry)(nil), "search.Entry")
-	proto.RegisterType((*AccessControlList)(nil), "search.AccessControlList")
-	proto.RegisterType((*FieldValue)(nil), "search.FieldValue")
-	proto.RegisterType((*FieldValue_Geo)(nil), "search.FieldValue.Geo")
-	proto.RegisterType((*Field)(nil), "search.Field")
-	proto.RegisterType((*FieldTypes)(nil), "search.FieldTypes")
-	proto.RegisterType((*IndexShardSettings)(nil), "search.IndexShardSettings")
-	proto.RegisterType((*FacetValue)(nil), "search.FacetValue")
-	proto.RegisterType((*Facet)(nil), "search.Facet")
-	proto.RegisterType((*DocumentMetadata)(nil), "search.DocumentMetadata")
-	proto.RegisterType((*Document)(nil), "search.Document")
-	proto.RegisterType((*SearchServiceError)(nil), "search.SearchServiceError")
-	proto.RegisterType((*RequestStatus)(nil), "search.RequestStatus")
-	proto.RegisterType((*IndexSpec)(nil), "search.IndexSpec")
-	proto.RegisterType((*IndexMetadata)(nil), "search.IndexMetadata")
-	proto.RegisterType((*IndexMetadata_Storage)(nil), "search.IndexMetadata.Storage")
-	proto.RegisterType((*IndexDocumentParams)(nil), "search.IndexDocumentParams")
-	proto.RegisterType((*IndexDocumentRequest)(nil), "search.IndexDocumentRequest")
-	proto.RegisterType((*IndexDocumentResponse)(nil), "search.IndexDocumentResponse")
-	proto.RegisterType((*DeleteDocumentParams)(nil), "search.DeleteDocumentParams")
-	proto.RegisterType((*DeleteDocumentRequest)(nil), "search.DeleteDocumentRequest")
-	proto.RegisterType((*DeleteDocumentResponse)(nil), "search.DeleteDocumentResponse")
-	proto.RegisterType((*ListDocumentsParams)(nil), "search.ListDocumentsParams")
-	proto.RegisterType((*ListDocumentsRequest)(nil), "search.ListDocumentsRequest")
-	proto.RegisterType((*ListDocumentsResponse)(nil), "search.ListDocumentsResponse")
-	proto.RegisterType((*ListIndexesParams)(nil), "search.ListIndexesParams")
-	proto.RegisterType((*ListIndexesRequest)(nil), "search.ListIndexesRequest")
-	proto.RegisterType((*ListIndexesResponse)(nil), "search.ListIndexesResponse")
-	proto.RegisterType((*DeleteSchemaParams)(nil), "search.DeleteSchemaParams")
-	proto.RegisterType((*DeleteSchemaRequest)(nil), "search.DeleteSchemaRequest")
-	proto.RegisterType((*DeleteSchemaResponse)(nil), "search.DeleteSchemaResponse")
-	proto.RegisterType((*SortSpec)(nil), "search.SortSpec")
-	proto.RegisterType((*ScorerSpec)(nil), "search.ScorerSpec")
-	proto.RegisterType((*FieldSpec)(nil), "search.FieldSpec")
-	proto.RegisterType((*FieldSpec_Expression)(nil), "search.FieldSpec.Expression")
-	proto.RegisterType((*FacetRange)(nil), "search.FacetRange")
-	proto.RegisterType((*FacetRequestParam)(nil), "search.FacetRequestParam")
-	proto.RegisterType((*FacetAutoDetectParam)(nil), "search.FacetAutoDetectParam")
-	proto.RegisterType((*FacetRequest)(nil), "search.FacetRequest")
-	proto.RegisterType((*FacetRefinement)(nil), "search.FacetRefinement")
-	proto.RegisterType((*FacetRefinement_Range)(nil), "search.FacetRefinement.Range")
-	proto.RegisterType((*SearchParams)(nil), "search.SearchParams")
-	proto.RegisterType((*SearchRequest)(nil), "search.SearchRequest")
-	proto.RegisterType((*FacetResultValue)(nil), "search.FacetResultValue")
-	proto.RegisterType((*FacetResult)(nil), "search.FacetResult")
-	proto.RegisterType((*SearchResult)(nil), "search.SearchResult")
-	proto.RegisterType((*SearchResponse)(nil), "search.SearchResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/search/search.proto", fileDescriptor_search_78ae5a87590ff3d8)
-}
-
-var fileDescriptor_search_78ae5a87590ff3d8 = []byte{
-	// 2994 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x59, 0x4f, 0x73, 0x1b, 0xc7,
-	0x95, 0xe7, 0x0c, 0x08, 0x10, 0x78, 0x20, 0xc8, 0x61, 0xf3, 0x8f, 0x20, 0x59, 0x6b, 0xd3, 0x23,
-	0xcb, 0xa6, 0xbd, 0x12, 0x45, 0x51, 0x2a, 0x5b, 0xcb, 0x75, 0xed, 0x1a, 0x02, 0x46, 0x14, 0x56,
-	0x20, 0x40, 0x37, 0x06, 0xb2, 0xb5, 0x55, 0xeb, 0xd9, 0xc9, 0x4c, 0x13, 0x9a, 0x0a, 0x30, 0x03,
-	0xcf, 0x0c, 0x14, 0xf1, 0x96, 0xf2, 0x2d, 0x97, 0x54, 0x52, 0x39, 0xe5, 0x94, 0x72, 0xe5, 0x92,
-	0xca, 0x35, 0xf7, 0x9c, 0x92, 0x5b, 0x6e, 0x39, 0xe5, 0x0b, 0xa4, 0x52, 0x49, 0x55, 0x3e, 0x43,
-	0xaa, 0x5f, 0xf7, 0x0c, 0x66, 0x40, 0xc8, 0xb4, 0x74, 0x22, 0xe6, 0xf5, 0xeb, 0xd7, 0xaf, 0xdf,
-	0xef, 0xbd, 0x5f, 0xbf, 0x6e, 0xc2, 0x83, 0x61, 0x10, 0x0c, 0x47, 0x6c, 0x7f, 0x18, 0x8c, 0x6c,
-	0x7f, 0xb8, 0x1f, 0x84, 0xc3, 0x3b, 0xf6, 0x64, 0xc2, 0xfc, 0xa1, 0xe7, 0xb3, 0x3b, 0x9e, 0x1f,
-	0xb3, 0xd0, 0xb7, 0x47, 0x77, 0x22, 0x66, 0x87, 0xce, 0x73, 0xf9, 0x67, 0x7f, 0x12, 0x06, 0x71,
-	0x40, 0x4a, 0xe2, 0x4b, 0xff, 0x87, 0x02, 0xc5, 0xbe, 0x13, 0x4c, 0x18, 0x79, 0x1f, 0x96, 0xe3,
-	0xf3, 0x09, 0xab, 0x2b, 0xbb, 0xca, 0xde, 0xda, 0x21, 0xd9, 0x97, 0xea, 0x38, 0xb8, 0x6f, 0x9e,
-	0x4f, 0x18, 0xc5, 0x71, 0xb2, 0x05, 0xc5, 0x17, 0xf6, 0x68, 0xca, 0xea, 0xea, 0xae, 0xb2, 0x57,
-	0xa1, 0xe2, 0x43, 0xff, 0xb5, 0x02, 0xcb, 0x5c, 0x89, 0xd4, 0x61, 0x6b, 0xd0, 0x37, 0xa8, 0xf5,
-	0xf0, 0x99, 0xd5, 0x6c, 0x74, 0x7b, 0xdd, 0x76, 0xb3, 0xd1, 0xb1, 0xda, 0x2d, 0x4d, 0x21, 0x1b,
-	0x50, 0x4b, 0x46, 0x8c, 0x93, 0x46, 0xbb, 0xa3, 0xa9, 0xe4, 0x2a, 0x6c, 0x1f, 0xd3, 0xde, 0xe0,
-	0xf4, 0x82, 0x76, 0x81, 0x10, 0x58, 0x4b, 0x87, 0x84, 0xfa, 0x32, 0xd9, 0x84, 0xf5, 0x54, 0xd6,
-	0xea, 0x9d, 0x34, 0xda, 0x5d, 0xad, 0x48, 0x6a, 0x50, 0x69, 0x74, 0x3a, 0x16, 0x37, 0xdd, 0xd7,
-	0x4a, 0xe4, 0x2d, 0xb8, 0xc2, 0x3f, 0x1b, 0x03, 0xf3, 0xb1, 0xd1, 0x35, 0xdb, 0xcd, 0x86, 0x69,
-	0xb4, 0xe4, 0xe0, 0x8a, 0xfe, 0x7b, 0x05, 0x8a, 0x86, 0x1f, 0x87, 0xe7, 0xe4, 0x06, 0x14, 0x23,
-	0xbe, 0x33, 0xdc, 0x6e, 0xf5, 0xb0, 0x96, 0xdb, 0x2e, 0x15, 0x63, 0xe4, 0x01, 0xc0, 0x84, 0x85,
-	0x63, 0x2f, 0x8a, 0xbc, 0xc0, 0xc7, 0xfd, 0xae, 0x1d, 0xd6, 0x13, 0x4d, 0xb4, 0xb3, 0x7f, 0x9a,
-	0x8e, 0xd3, 0x8c, 0x2e, 0x79, 0x17, 0x56, 0x5d, 0x2f, 0x9a, 0x8c, 0xec, 0x73, 0xcb, 0xb7, 0xc7,
-	0xac, 0x5e, 0xc0, 0x58, 0x55, 0xa5, 0xac, 0x6b, 0x8f, 0x99, 0x7e, 0x0f, 0x60, 0x36, 0x99, 0x94,
-	0x61, 0x99, 0x1a, 0x0d, 0x1e, 0xa6, 0x0a, 0x14, 0xbf, 0xa0, 0x6d, 0xd3, 0xd0, 0x54, 0xa2, 0xc1,
-	0xea, 0xa3, 0x41, 0xa7, 0x63, 0x35, 0x7b, 0x5d, 0x93, 0xf6, 0x3a, 0x5a, 0x41, 0xa7, 0xb0, 0xd1,
-	0x70, 0x1c, 0x16, 0x45, 0xcd, 0xc0, 0x8f, 0xc3, 0x60, 0xd4, 0xf1, 0xa2, 0x98, 0x23, 0x12, 0xfc,
-	0xc8, 0x67, 0x21, 0xee, 0xa5, 0x42, 0xc5, 0x07, 0xf9, 0x00, 0x56, 0x98, 0x1f, 0x87, 0x1e, 0x8b,
-	0xea, 0xea, 0x6e, 0x21, 0xbb, 0x47, 0xf4, 0x9c, 0x26, 0xa3, 0xfa, 0x6f, 0x55, 0x80, 0x47, 0x1e,
-	0x1b, 0xb9, 0x4f, 0x39, 0x92, 0xe4, 0x41, 0x2e, 0x0f, 0xde, 0x4e, 0x26, 0xcd, 0x34, 0xf6, 0xf9,
-	0xda, 0xcc, 0x8f, 0x39, 0xdc, 0x47, 0xcb, 0xa6, 0xf1, 0xa5, 0x29, 0x33, 0xe3, 0x6d, 0x28, 0xf3,
-	0x34, 0x9c, 0xda, 0x43, 0x99, 0x1c, 0x47, 0x2a, 0xf3, 0x69, 0x2a, 0xe3, 0x41, 0x89, 0xe2, 0xd0,
-	0xf3, 0x87, 0x96, 0x48, 0x20, 0x19, 0x14, 0x21, 0x13, 0x8b, 0xef, 0x41, 0x61, 0xc8, 0x82, 0xfa,
-	0xf2, 0xae, 0xb2, 0x07, 0x87, 0x3b, 0x0b, 0xd6, 0x3e, 0x66, 0x01, 0xe5, 0x2a, 0xd7, 0x3e, 0x84,
-	0xc2, 0x31, 0x0b, 0x88, 0x06, 0x85, 0x91, 0x1d, 0xd7, 0x8b, 0xbb, 0xea, 0x9e, 0x42, 0xf9, 0x4f,
-	0x94, 0xf8, 0xc3, 0x7a, 0x49, 0x4a, 0xfc, 0xa1, 0xfe, 0x3f, 0x50, 0xcd, 0xb8, 0xcc, 0x43, 0xcd,
-	0x9d, 0xd6, 0x96, 0xf8, 0xaf, 0xc7, 0xe6, 0x49, 0x47, 0x53, 0xf8, 0xaf, 0x86, 0xd9, 0x3b, 0xd1,
-	0x54, 0xfe, 0xab, 0xd5, 0x30, 0x0d, 0xad, 0x40, 0x00, 0x4a, 0xdd, 0xc1, 0xc9, 0x43, 0x83, 0x6a,
-	0xcb, 0x64, 0x05, 0x0a, 0xc7, 0x46, 0x4f, 0x2b, 0xea, 0x06, 0x14, 0xd1, 0x1b, 0x42, 0x60, 0x19,
-	0x91, 0x55, 0x76, 0xd5, 0xbd, 0x0a, 0xc5, 0xdf, 0x64, 0x6f, 0x56, 0x1a, 0xea, 0x5e, 0x75, 0x56,
-	0x43, 0x33, 0xff, 0x93, 0x72, 0x31, 0x65, 0xc8, 0xb9, 0x43, 0xd1, 0x42, 0x5b, 0x87, 0x12, 0x06,
-	0x8e, 0xdd, 0xa5, 0x30, 0x08, 0x00, 0xf4, 0x3f, 0x2a, 0x40, 0xda, 0xbe, 0xcb, 0x5e, 0xf6, 0x9f,
-	0xdb, 0xa1, 0xdb, 0x67, 0x71, 0xec, 0xf9, 0xc3, 0x88, 0xbc, 0x0f, 0xeb, 0x93, 0x90, 0xbd, 0xb0,
-	0xfc, 0xe9, 0xd8, 0x8a, 0xf8, 0x48, 0x54, 0x57, 0x76, 0x0b, 0x7b, 0x45, 0x5a, 0xe3, 0xe2, 0xee,
-	0x74, 0x8c, 0xea, 0x11, 0xd9, 0x05, 0xc8, 0xa8, 0xf0, 0x3d, 0x14, 0x8f, 0x94, 0xbb, 0xb4, 0xe2,
-	0xa7, 0x1a, 0xff, 0x05, 0xd7, 0xe7, 0x2c, 0x59, 0xc2, 0x2f, 0xeb, 0xcc, 0x1e, 0x45, 0x1c, 0x51,
-	0x6e, 0xb6, 0x9e, 0x33, 0xdb, 0x47, 0x85, 0x47, 0x7c, 0x9c, 0xdc, 0x84, 0xda, 0x28, 0x70, 0xec,
-	0x91, 0x15, 0xb2, 0xc9, 0xc8, 0x73, 0x6c, 0x04, 0xba, 0x72, 0xb4, 0x44, 0x57, 0x51, 0x4c, 0x85,
-	0x54, 0xff, 0xa9, 0x02, 0xf0, 0xc8, 0x76, 0x58, 0xfc, 0xdd, 0x19, 0x99, 0x6a, 0xe4, 0x33, 0x92,
-	0x03, 0x29, 0x33, 0xf2, 0xf2, 0x8c, 0xd3, 0x6f, 0x5c, 0x48, 0x0e, 0x99, 0x08, 0x19, 0xf8, 0x11,
-	0x75, 0xbe, 0xda, 0xeb, 0xa1, 0x9e, 0xfa, 0x97, 0xa0, 0xfe, 0x15, 0x68, 0xad, 0xc0, 0x99, 0x8e,
-	0x99, 0x1f, 0x9f, 0xb0, 0xd8, 0x76, 0xed, 0xd8, 0x26, 0x75, 0x58, 0x79, 0xc1, 0x42, 0x24, 0x18,
-	0xbe, 0xbf, 0x02, 0x4d, 0x3e, 0xc9, 0x01, 0x6c, 0x39, 0xc1, 0x78, 0xec, 0xc5, 0x31, 0x73, 0xad,
-	0x28, 0xb6, 0x12, 0x35, 0x15, 0xd5, 0x48, 0x3a, 0xd6, 0x8f, 0x9f, 0x8a, 0x11, 0xfd, 0x9f, 0x2a,
-	0x94, 0x93, 0x05, 0xc8, 0x1a, 0xa8, 0x9e, 0x2b, 0x29, 0x41, 0xf5, 0xdc, 0x4b, 0xab, 0xf3, 0x06,
-	0x14, 0xcf, 0x78, 0x72, 0x21, 0x88, 0x19, 0xb6, 0xc0, 0x8c, 0xa3, 0x62, 0x8c, 0x5c, 0x85, 0x72,
-	0x10, 0xba, 0x2c, 0xb4, 0x3c, 0x17, 0xb1, 0x2b, 0xd2, 0x15, 0xfc, 0x6e, 0xbb, 0xe4, 0x14, 0xd6,
-	0x93, 0x21, 0x2b, 0x0a, 0xa6, 0xa1, 0xc3, 0xea, 0xa5, 0x3c, 0x60, 0x89, 0x6b, 0xfb, 0x3d, 0x31,
-	0xa5, 0x8f, 0x5a, 0x47, 0xe5, 0xfe, 0xe0, 0xf4, 0xb4, 0xd3, 0x36, 0x5a, 0xb4, 0x16, 0x64, 0x07,
-	0xc8, 0x03, 0x58, 0x89, 0xe2, 0x20, 0xe4, 0x0e, 0x17, 0xf3, 0xdc, 0x9b, 0x5a, 0xea, 0x8b, 0xf1,
-	0xa3, 0xe5, 0x56, 0xbb, 0xff, 0x84, 0x26, 0xea, 0xb8, 0x17, 0x1e, 0xfd, 0x7a, 0x79, 0x6e, 0x2f,
-	0x5c, 0x48, 0xc5, 0x98, 0x7e, 0x0b, 0x6a, 0x39, 0x47, 0xf8, 0x49, 0xd2, 0x32, 0x1e, 0x35, 0x06,
-	0x1d, 0xd3, 0x68, 0x69, 0x4b, 0x64, 0x15, 0x52, 0xcf, 0x34, 0x45, 0xdf, 0x84, 0x15, 0xb9, 0x18,
-	0x52, 0x44, 0xbb, 0xff, 0x44, 0x5b, 0xd2, 0x7f, 0xa3, 0x00, 0x11, 0xf9, 0xdd, 0x67, 0xe1, 0x0b,
-	0xcf, 0x61, 0x46, 0x18, 0x06, 0xa1, 0xfe, 0x73, 0x05, 0x2a, 0xf8, 0xab, 0x19, 0xb8, 0x8c, 0x94,
-	0x40, 0xed, 0x3d, 0xd1, 0x96, 0xf8, 0xe9, 0xd5, 0xee, 0x3e, 0x6d, 0x74, 0xda, 0x2d, 0x8b, 0x1a,
-	0x9f, 0x0f, 0x8c, 0xbe, 0xa9, 0x29, 0x5c, 0x68, 0xd2, 0x46, 0xb7, 0xdf, 0x36, 0xba, 0xa6, 0x65,
-	0x50, 0xda, 0xa3, 0x9a, 0xca, 0xcf, 0xbe, 0x76, 0xd7, 0x34, 0x68, 0xb7, 0xd1, 0x91, 0xb2, 0x02,
-	0xd9, 0x86, 0x8d, 0x53, 0x83, 0x9e, 0xb4, 0xfb, 0xfd, 0x76, 0xaf, 0x6b, 0xb5, 0x8c, 0x2e, 0x77,
-	0x6b, 0x99, 0x54, 0x61, 0xc5, 0x6c, 0x9f, 0x18, 0xbd, 0x81, 0xa9, 0x15, 0xc9, 0x35, 0xd8, 0x69,
-	0xf6, 0xba, 0xcd, 0x01, 0xa5, 0xdc, 0x1a, 0xda, 0x6d, 0x34, 0xcd, 0x76, 0xaf, 0xab, 0x95, 0xf4,
-	0x5f, 0x28, 0x50, 0xa3, 0xec, 0xeb, 0x29, 0x8b, 0xe2, 0x7e, 0x6c, 0xc7, 0xd3, 0x88, 0x97, 0x95,
-	0x13, 0xb8, 0x22, 0x97, 0xd7, 0x0e, 0xdf, 0x4b, 0x4f, 0xc0, 0x0b, 0xfb, 0xd9, 0x4f, 0xf7, 0x42,
-	0x71, 0x06, 0x2f, 0x2b, 0xc6, 0x45, 0x96, 0xcb, 0x62, 0xdb, 0x1b, 0xc9, 0x4e, 0xa0, 0x8a, 0xb2,
-	0x16, 0x8a, 0xc8, 0x4d, 0x58, 0x73, 0x6c, 0x3f, 0xf0, 0x3d, 0x5e, 0xed, 0xb8, 0x4c, 0x01, 0xd3,
-	0xa5, 0x96, 0x4a, 0xb9, 0x3d, 0xfd, 0xdb, 0x02, 0x54, 0x04, 0x63, 0x4d, 0x98, 0xb3, 0xb0, 0xba,
-	0x4e, 0xa0, 0xea, 0x04, 0x7e, 0xe4, 0x45, 0x31, 0xf3, 0x9d, 0x73, 0x79, 0x08, 0xff, 0x5b, 0xe2,
-	0x6c, 0x3a, 0x97, 0x53, 0x40, 0xa2, 0x74, 0xb4, 0x7a, 0x6a, 0x50, 0xab, 0xd5, 0x6b, 0x0e, 0x4e,
-	0x8c, 0xae, 0x49, 0xb3, 0xf3, 0xc9, 0x75, 0xa8, 0x70, 0xb3, 0xd1, 0xc4, 0x76, 0x12, 0x3a, 0x98,
-	0x09, 0xb2, 0xc5, 0x28, 0xb3, 0x3b, 0x29, 0xc6, 0x07, 0x50, 0x92, 0x49, 0x3d, 0x97, 0x8a, 0x33,
-	0x0f, 0x64, 0x3a, 0x97, 0xfa, 0x46, 0x83, 0x36, 0x1f, 0x53, 0xa9, 0x4f, 0xee, 0xc3, 0xf2, 0x98,
-	0xef, 0x5f, 0x14, 0xc3, 0xce, 0xc5, 0x79, 0x27, 0x81, 0xcb, 0x8e, 0xca, 0xa7, 0xb4, 0xdd, 0xa3,
-	0x6d, 0xf3, 0x19, 0x45, 0x6d, 0xfd, 0xdf, 0x91, 0x96, 0x52, 0xb7, 0x01, 0x4a, 0xc7, 0x9d, 0xde,
-	0xc3, 0x46, 0x47, 0x5b, 0xe2, 0x5d, 0x41, 0x76, 0x7f, 0x9a, 0xa2, 0x7f, 0x0c, 0x25, 0x99, 0xc2,
-	0x00, 0x72, 0x79, 0x6d, 0x09, 0xd3, 0xb9, 0x61, 0x36, 0xfa, 0x66, 0x8f, 0x1a, 0xa2, 0xfd, 0x6a,
-	0x76, 0x7a, 0x83, 0x96, 0xc5, 0x05, 0x8d, 0x63, 0x43, 0x53, 0xf5, 0xf7, 0x60, 0x99, 0x2f, 0xce,
-	0x33, 0x3d, 0x59, 0x5e, 0x5b, 0x22, 0x6b, 0x00, 0x0f, 0x1b, 0xcd, 0x27, 0xbc, 0xd3, 0xea, 0xf2,
-	0xcc, 0xff, 0xab, 0x02, 0x35, 0xf4, 0x36, 0xe5, 0xac, 0x03, 0x00, 0x8f, 0x0b, 0xac, 0x68, 0xc2,
-	0x1c, 0x44, 0xab, 0x7a, 0xb8, 0x71, 0x61, 0x63, 0xb4, 0xe2, 0xa5, 0xc8, 0xee, 0x25, 0xe4, 0x22,
-	0x5a, 0x91, 0xfc, 0xc9, 0x88, 0x87, 0x60, 0xc2, 0x30, 0x9f, 0xcc, 0x8a, 0xbe, 0x80, 0xad, 0x59,
-	0x1e, 0xeb, 0xc4, 0x87, 0xa4, 0xf2, 0xd3, 0x9a, 0xbf, 0xf6, 0xd9, 0xac, 0x40, 0xdf, 0x81, 0xaa,
-	0x3d, 0x0e, 0xa6, 0x7e, 0x6c, 0x4d, 0x23, 0xe6, 0x4a, 0x5e, 0x05, 0x21, 0x1a, 0x44, 0xcc, 0xe5,
-	0x1d, 0xd3, 0xc8, 0x1b, 0x7b, 0xb1, 0xe4, 0x52, 0xf1, 0xa1, 0x7f, 0xa3, 0xc2, 0x26, 0x2e, 0x92,
-	0xd0, 0xcb, 0xa9, 0x1d, 0xda, 0xe3, 0x88, 0xdc, 0x82, 0xb2, 0x2b, 0x25, 0x78, 0x70, 0x56, 0x0f,
-	0xb5, 0x79, 0x22, 0xa2, 0xa9, 0x06, 0x79, 0x0a, 0x95, 0xb3, 0x90, 0x45, 0xcf, 0x7d, 0x16, 0x45,
-	0x32, 0x5d, 0x6f, 0xe6, 0xb6, 0x90, 0xb7, 0xbe, 0xff, 0x28, 0x51, 0x3e, 0xaa, 0xf5, 0x9f, 0x75,
-	0x9b, 0x8f, 0x69, 0xaf, 0xdb, 0x1b, 0xf4, 0x3b, 0xcf, 0x1e, 0xaa, 0x75, 0x85, 0xce, 0x4c, 0xcd,
-	0x05, 0xbd, 0x70, 0x79, 0xd0, 0xf5, 0x7b, 0x50, 0x49, 0x8d, 0x73, 0xf8, 0x73, 0xe6, 0x05, 0x21,
-	0x7d, 0xf1, 0xd8, 0xe8, 0xf2, 0xf6, 0xf2, 0x29, 0xe7, 0x13, 0xcc, 0xa5, 0x1f, 0xc0, 0x56, 0xce,
-	0x4b, 0xc9, 0x19, 0xe4, 0x1e, 0x94, 0x26, 0xe8, 0xb0, 0xc4, 0xfb, 0xad, 0xef, 0xd8, 0x13, 0x95,
-	0xaa, 0x64, 0x1b, 0x4a, 0xf6, 0x64, 0xc2, 0x0f, 0x0b, 0x8e, 0xe5, 0x2a, 0x2d, 0xda, 0x93, 0x49,
-	0xdb, 0xd5, 0xff, 0x0f, 0xb6, 0xe7, 0xd6, 0x88, 0x26, 0x81, 0x1f, 0x31, 0x72, 0x1b, 0x4a, 0x11,
-	0x92, 0x93, 0x8c, 0xf3, 0x76, 0xb2, 0x48, 0x8e, 0xb9, 0xa8, 0x54, 0xe2, 0xe6, 0xdd, 0xc0, 0xe1,
-	0xe6, 0x79, 0x5a, 0x55, 0x68, 0xd1, 0x0d, 0x9c, 0xb6, 0xab, 0x5b, 0xb0, 0xd5, 0x62, 0x23, 0x16,
-	0xb3, 0x39, 0x1c, 0x67, 0xea, 0x4a, 0x46, 0x7d, 0x2e, 0xb0, 0xea, 0xf7, 0x08, 0xac, 0x0b, 0xdb,
-	0xf9, 0x05, 0x92, 0x20, 0xdd, 0x9f, 0x0b, 0xd2, 0xf5, 0x34, 0x4f, 0x16, 0xf8, 0x73, 0x59, 0x94,
-	0x8e, 0x61, 0x67, 0x7e, 0x95, 0x37, 0x0a, 0x93, 0xfe, 0x67, 0x05, 0x36, 0xf9, 0x45, 0x21, 0xb1,
-	0x13, 0xc9, 0x78, 0xbc, 0x7e, 0x19, 0xef, 0xf2, 0x7e, 0xca, 0x0e, 0x63, 0x2b, 0x0d, 0x3b, 0x27,
-	0x50, 0x40, 0x59, 0x4b, 0x06, 0x73, 0xc3, 0xf3, 0x9d, 0xd1, 0xd4, 0x65, 0x56, 0xaa, 0x89, 0xdb,
-	0x2a, 0x1f, 0x2d, 0xc7, 0xe1, 0x94, 0xd1, 0x75, 0x39, 0xdc, 0x97, 0x73, 0xc8, 0xd5, 0xa4, 0x16,
-	0x91, 0x71, 0x8f, 0x0a, 0x77, 0x0f, 0x0e, 0x64, 0x41, 0x92, 0xb7, 0xa0, 0xf2, 0x43, 0x76, 0x1e,
-	0x59, 0x81, 0x3f, 0x3a, 0x47, 0xde, 0x2d, 0xd3, 0x32, 0x17, 0xf4, 0xfc, 0xd1, 0x39, 0x4f, 0xd4,
-	0xdc, 0xa6, 0x2e, 0x4d, 0xd4, 0x05, 0x21, 0x58, 0x00, 0x81, 0x9a, 0x85, 0x20, 0x86, 0xed, 0xb9,
-	0x35, 0x16, 0x20, 0xa0, 0x5e, 0x9e, 0xa8, 0x59, 0x06, 0x51, 0x2f, 0x63, 0x10, 0xfd, 0x4f, 0x2a,
-	0x6c, 0xf0, 0x65, 0x11, 0x02, 0x96, 0xa0, 0xf5, 0x2e, 0xac, 0x9e, 0xb1, 0xd8, 0x79, 0x6e, 0x45,
-	0xce, 0x73, 0x36, 0xb6, 0x91, 0xd5, 0xca, 0xb4, 0x8a, 0xb2, 0x3e, 0x8a, 0x48, 0x3d, 0x4b, 0x6b,
-	0xc5, 0x23, 0xf5, 0x30, 0x8d, 0xe4, 0x77, 0x1f, 0x7b, 0x7b, 0xa0, 0x09, 0xb0, 0x44, 0x3a, 0xe0,
-	0x19, 0x8c, 0x9d, 0x39, 0x5d, 0x43, 0x39, 0x3a, 0xc2, 0x2f, 0xad, 0xe4, 0x3e, 0x6c, 0xe6, 0xe1,
-	0xc5, 0x19, 0x02, 0x1b, 0x09, 0xf0, 0x46, 0x16, 0x60, 0x9c, 0x49, 0x3e, 0xe2, 0x49, 0x91, 0x58,
-	0xb6, 0x26, 0x21, 0x3b, 0xf3, 0x5e, 0xe2, 0x79, 0x58, 0xe1, 0xe9, 0x20, 0x6d, 0x9f, 0xa2, 0x98,
-	0xec, 0x40, 0x29, 0x38, 0x3b, 0x8b, 0x58, 0x5c, 0x5f, 0xc1, 0x13, 0x58, 0x7e, 0x65, 0x0e, 0xe0,
-	0xf2, 0xeb, 0x1d, 0xc0, 0xfa, 0x57, 0x40, 0x32, 0xd1, 0x4c, 0xd2, 0xe4, 0xee, 0x5c, 0x9a, 0x5c,
-	0xcd, 0xa6, 0x49, 0x2e, 0xf2, 0x97, 0xd5, 0xe9, 0x37, 0xb2, 0xbc, 0xd2, 0x05, 0xde, 0x2c, 0x47,
-	0x3e, 0x85, 0x35, 0x11, 0xa4, 0xb1, 0x3c, 0xe2, 0x64, 0xa6, 0x6c, 0x2f, 0x3c, 0xff, 0x68, 0xcd,
-	0xcb, 0x7e, 0xea, 0x3f, 0x56, 0x80, 0x08, 0xb6, 0x10, 0xb9, 0x20, 0x93, 0x66, 0x16, 0x35, 0xe5,
-	0x35, 0xdb, 0x96, 0x79, 0x56, 0x2c, 0x5c, 0xca, 0x8a, 0xff, 0x0f, 0x9b, 0x59, 0x0f, 0x92, 0x40,
-	0x1f, 0xce, 0x05, 0xfa, 0x5a, 0x9e, 0x13, 0xb3, 0xee, 0x5e, 0x16, 0x69, 0x23, 0x21, 0xf6, 0x64,
-	0x85, 0x37, 0xe3, 0xc3, 0x3f, 0x28, 0x50, 0xee, 0x07, 0x61, 0x8c, 0x94, 0xf6, 0x01, 0xac, 0x47,
-	0x41, 0x18, 0x5b, 0xec, 0xe5, 0x24, 0x64, 0x91, 0xbc, 0x87, 0xa9, 0x98, 0xfa, 0x41, 0x18, 0x1b,
-	0xa9, 0x94, 0xdc, 0x96, 0x8a, 0x2e, 0x8b, 0x1c, 0xe6, 0xbb, 0x9e, 0x3f, 0xc4, 0x32, 0x4b, 0xd2,
-	0x1e, 0xd5, 0x5b, 0xe9, 0x18, 0xb9, 0x05, 0xc4, 0x65, 0x67, 0xf6, 0x74, 0x14, 0x8b, 0xbb, 0xa7,
-	0x15, 0xb3, 0x97, 0xb1, 0xac, 0x2a, 0x4d, 0x8e, 0xe0, 0xe5, 0xd0, 0x64, 0x2f, 0x79, 0x90, 0xb6,
-	0xf3, 0xda, 0xfe, 0x74, 0xcc, 0x42, 0xcf, 0xc1, 0xca, 0x52, 0xe8, 0x66, 0x76, 0x42, 0x57, 0x0c,
-	0xe9, 0x7f, 0x51, 0x00, 0xfa, 0x4e, 0x10, 0xb2, 0x10, 0x37, 0xf2, 0xdf, 0x50, 0x8a, 0xf0, 0x4b,
-	0x42, 0x7d, 0x35, 0xf3, 0xa4, 0x25, 0x75, 0xe4, 0xcf, 0xa3, 0xd5, 0x93, 0x86, 0xd9, 0x7c, 0x6c,
-	0xf5, 0x9b, 0x3d, 0x6a, 0x50, 0x2a, 0xa7, 0x91, 0x6b, 0x79, 0xf6, 0x58, 0xbe, 0x7b, 0x30, 0x63,
-	0xe2, 0x8f, 0xe1, 0xca, 0xd8, 0x16, 0xe4, 0xc3, 0x75, 0x2d, 0xc4, 0x89, 0xc5, 0x2c, 0x8c, 0xea,
-	0x15, 0xdc, 0xd2, 0x36, 0x0e, 0x0b, 0xfb, 0xa7, 0xe9, 0x20, 0x76, 0xa6, 0x89, 0xf5, 0x1d, 0x6a,
-	0xf0, 0x15, 0xdb, 0xdd, 0x63, 0x2b, 0xbb, 0xbe, 0xe8, 0x68, 0x73, 0x12, 0x55, 0xff, 0x95, 0x02,
-	0x15, 0xec, 0x0d, 0xe7, 0xee, 0x05, 0x85, 0xf4, 0x5e, 0xf0, 0x29, 0x40, 0x06, 0x32, 0x9e, 0x9f,
-	0x30, 0x3b, 0x6e, 0xd3, 0xa9, 0xfb, 0x33, 0x00, 0x69, 0x46, 0xff, 0xda, 0x67, 0x00, 0x19, 0x68,
-	0x13, 0xfb, 0x85, 0xcc, 0xbd, 0xe3, 0xed, 0x9c, 0xfd, 0x65, 0x1c, 0xc9, 0x48, 0xf4, 0xc7, 0xf2,
-	0x89, 0x82, 0xda, 0xfe, 0x90, 0x65, 0x3c, 0x54, 0x52, 0x0b, 0x5b, 0x50, 0x44, 0x8e, 0x4c, 0x1e,
-	0x4a, 0xf1, 0x83, 0x68, 0x50, 0x60, 0xbe, 0x2b, 0x39, 0x98, 0xff, 0xd4, 0x7f, 0xa2, 0xc0, 0x86,
-	0x30, 0x25, 0xb2, 0x15, 0xc3, 0xc7, 0x7b, 0x58, 0x91, 0x09, 0x02, 0x13, 0x05, 0xc9, 0x10, 0x50,
-	0xd4, 0x41, 0x48, 0xf6, 0xa0, 0x18, 0xf2, 0xb5, 0x2f, 0xb4, 0xd4, 0xa9, 0x57, 0x54, 0x28, 0x90,
-	0x0f, 0x41, 0x13, 0xa6, 0xf8, 0x45, 0x28, 0x0e, 0x6d, 0xcf, 0x8f, 0xf1, 0x92, 0x5f, 0xa1, 0xeb,
-	0x28, 0x6f, 0xa6, 0x62, 0xfd, 0x3f, 0x61, 0x0b, 0xe7, 0x37, 0xa6, 0x71, 0xd0, 0x62, 0x31, 0x73,
-	0xa4, 0x37, 0x37, 0x16, 0x78, 0x73, 0xa4, 0xde, 0x3d, 0xc8, 0x7a, 0xa4, 0x0f, 0x60, 0x35, 0xbb,
-	0x8f, 0x85, 0xd7, 0xb9, 0x19, 0xed, 0xaa, 0xd8, 0xdd, 0x5f, 0xcd, 0xbb, 0x9d, 0x89, 0x40, 0x42,
-	0x06, 0xfa, 0xb7, 0x0a, 0xac, 0xcb, 0xd1, 0x33, 0xcf, 0x67, 0xd8, 0x64, 0x2f, 0x32, 0xbd, 0xf0,
-	0x61, 0x9a, 0xdc, 0x4b, 0xc2, 0x34, 0x77, 0x9b, 0x98, 0xb3, 0xb8, 0x9f, 0x8d, 0xd8, 0xb5, 0x3b,
-	0x50, 0x14, 0xb8, 0xa6, 0x18, 0x2a, 0x0b, 0x30, 0x54, 0x67, 0x18, 0xfe, 0x6e, 0x05, 0x56, 0xc5,
-	0xc5, 0xf9, 0x8d, 0x7b, 0xab, 0x2d, 0x28, 0x7e, 0x3d, 0x65, 0xe1, 0x39, 0x76, 0xa0, 0x15, 0x2a,
-	0x3e, 0xf8, 0x71, 0xe8, 0x4c, 0xc3, 0x28, 0x08, 0x25, 0x75, 0xc8, 0xaf, 0xcc, 0x31, 0x59, 0xcd,
-	0x1d, 0x93, 0x8f, 0xa0, 0x2a, 0x34, 0x2c, 0x7c, 0x32, 0x13, 0x97, 0xd5, 0x77, 0xf2, 0x77, 0x7b,
-	0x79, 0xf1, 0x68, 0xa2, 0x9e, 0x78, 0x33, 0xeb, 0xf6, 0xba, 0x06, 0x05, 0x27, 0x95, 0xcc, 0x5a,
-	0x89, 0xd2, 0x7c, 0x2b, 0x71, 0x1f, 0x76, 0xb0, 0xd6, 0x99, 0x6b, 0x39, 0x78, 0xc7, 0xb2, 0x1d,
-	0x67, 0x1a, 0xda, 0xce, 0xb9, 0x3c, 0xb0, 0xb7, 0xe4, 0x68, 0x93, 0x0f, 0x36, 0xe4, 0x18, 0xb9,
-	0x0d, 0x15, 0x64, 0x4f, 0x0c, 0x47, 0x39, 0xdf, 0x02, 0x25, 0x5c, 0x4c, 0xcb, 0x51, 0xc2, 0xca,
-	0xf7, 0xa0, 0x2a, 0x99, 0x06, 0x27, 0x54, 0x10, 0x3b, 0x72, 0x91, 0xd1, 0x28, 0x44, 0x33, 0x06,
-	0x3c, 0x00, 0xc0, 0x3b, 0xa4, 0x98, 0x03, 0x38, 0x67, 0xe3, 0x02, 0x25, 0xd0, 0xca, 0x59, 0x4a,
-	0x2c, 0xb9, 0x06, 0x73, 0x35, 0xdf, 0x60, 0x92, 0x27, 0xb0, 0x3a, 0xb1, 0xc3, 0xc8, 0xf3, 0x87,
-	0x16, 0x5e, 0xe0, 0x6b, 0x18, 0xcb, 0xdd, 0x85, 0xb1, 0x3c, 0x15, 0x8a, 0x78, 0x95, 0x2f, 0xf5,
-	0x4d, 0xda, 0x6e, 0x9a, 0xb4, 0x3a, 0x99, 0x09, 0xc9, 0xa7, 0x70, 0xd5, 0x9e, 0xc6, 0x81, 0xe5,
-	0x7a, 0x91, 0x13, 0xbc, 0x60, 0xa1, 0x85, 0x6f, 0x50, 0x22, 0x82, 0xf5, 0x75, 0x8c, 0xb1, 0x72,
-	0x40, 0x77, 0xb8, 0x4e, 0x4b, 0xaa, 0x60, 0x86, 0x62, 0x14, 0xc9, 0x7f, 0x40, 0x2d, 0x69, 0xbb,
-	0xc4, 0xbb, 0x96, 0x86, 0x11, 0xdc, 0x5a, 0x54, 0x3c, 0x74, 0x55, 0xaa, 0x8a, 0x17, 0xcb, 0x87,
-	0xa0, 0x89, 0xa5, 0xc2, 0x34, 0xd7, 0xeb, 0x1b, 0x38, 0xfb, 0xca, 0x2b, 0x4a, 0x81, 0xae, 0x9f,
-	0xcd, 0x55, 0x5b, 0x1f, 0xae, 0x08, 0x1b, 0x62, 0x0b, 0xc8, 0x0b, 0xe2, 0x08, 0xa8, 0x13, 0x8c,
-	0xf2, 0xf5, 0x9c, 0xa9, 0x39, 0xf2, 0xa0, 0x5b, 0x67, 0x8b, 0x28, 0xe5, 0x26, 0x54, 0x85, 0x51,
-	0x97, 0x4d, 0xe2, 0xe7, 0xf5, 0xcd, 0xcc, 0xa1, 0x03, 0x38, 0xd0, 0xe2, 0x72, 0xfd, 0x10, 0x60,
-	0x96, 0xa8, 0xa4, 0x0c, 0x98, 0xaa, 0xda, 0x12, 0xbe, 0x74, 0xb4, 0xbb, 0xc7, 0x1d, 0x43, 0x53,
-	0xc8, 0x1a, 0xc0, 0xa9, 0x41, 0x2d, 0x6a, 0xf4, 0x07, 0x1d, 0x53, 0x53, 0xf5, 0xf7, 0xa1, 0x9a,
-	0x01, 0x04, 0x55, 0x11, 0x12, 0x6d, 0x89, 0x54, 0x61, 0x85, 0x1a, 0x9d, 0xc6, 0x97, 0xf8, 0xa6,
-	0x67, 0x42, 0x4d, 0xa0, 0x98, 0x30, 0xd6, 0xad, 0xb9, 0x5e, 0x65, 0x6b, 0x11, 0xd8, 0x97, 0x75,
-	0x29, 0x53, 0xd0, 0x64, 0x44, 0xa3, 0xe4, 0xc8, 0x7e, 0x15, 0x5f, 0x09, 0xf8, 0xf1, 0xa5, 0x9d,
-	0x8a, 0x0f, 0xf2, 0x09, 0x40, 0x06, 0x29, 0x71, 0xcd, 0x7f, 0x25, 0x52, 0x19, 0x55, 0xfd, 0x73,
-	0xa8, 0x66, 0x96, 0x5d, 0xb8, 0xe2, 0xfe, 0x8c, 0x21, 0x79, 0x02, 0xd4, 0xe7, 0xcc, 0xa6, 0xee,
-	0x26, 0xef, 0xd5, 0xbf, 0x54, 0x12, 0x56, 0x93, 0x46, 0xf3, 0x2f, 0x21, 0xea, 0x25, 0x2f, 0x21,
-	0xb7, 0xe7, 0x8e, 0xd0, 0x05, 0xcf, 0xca, 0x19, 0x05, 0xe4, 0x5a, 0x5e, 0xcc, 0xe8, 0x9d, 0x42,
-	0xc5, 0x47, 0x86, 0x00, 0x0b, 0x59, 0x02, 0xd4, 0xff, 0xae, 0xc0, 0x5a, 0xea, 0x9b, 0x68, 0x03,
-	0x6f, 0x41, 0x29, 0x44, 0x3f, 0x65, 0x1b, 0x38, 0x87, 0x9e, 0xd8, 0x03, 0x95, 0x3a, 0xe4, 0x06,
-	0xd4, 0x72, 0x3c, 0x86, 0x30, 0x14, 0xe8, 0x6a, 0x96, 0xbe, 0x32, 0x9d, 0x65, 0xe1, 0xfb, 0xf4,
-	0xf0, 0xaf, 0x62, 0xeb, 0x8f, 0x61, 0x35, 0x29, 0x42, 0xf4, 0xaf, 0x88, 0xfe, 0x6d, 0x2e, 0x88,
-	0x3f, 0xad, 0x9e, 0xcd, 0x3e, 0x3e, 0x2a, 0x95, 0xff, 0xb6, 0xa2, 0xfd, 0xac, 0xfb, 0xb0, 0xfc,
-	0xbf, 0xf2, 0xff, 0xb5, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x09, 0x6f, 0x4d, 0x63, 0xf2, 0x1d,
-	0x00, 0x00,
+func (*FacetRefinement_Range) ProtoMessage() {}
+
+func (x *FacetRefinement_Range) ProtoReflect() protoreflect.Message {
+	mi := &file_search_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 FacetRefinement_Range.ProtoReflect.Descriptor instead.
+func (*FacetRefinement_Range) Descriptor() ([]byte, []int) {
+	return file_search_proto_rawDescGZIP(), []int{37, 0}
+}
+
+func (x *FacetRefinement_Range) GetStart() string {
+	if x != nil && x.Start != nil {
+		return *x.Start
+	}
+	return ""
+}
+
+func (x *FacetRefinement_Range) GetEnd() string {
+	if x != nil && x.End != nil {
+		return *x.End
+	}
+	return ""
+}
+
+var File_search_proto protoreflect.FileDescriptor
+
+var file_search_proto_rawDesc = []byte{
+	0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06,
+	0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x22, 0x92, 0x02, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65,
+	0x12, 0x2b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12,
+	0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x2e, 0x54, 0x79,
+	0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x22, 0xad, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x55,
+	0x53, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x43, 0x41, 0x4e, 0x4f, 0x4e, 0x49, 0x43, 0x41, 0x4c,
+	0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x42, 0x59,
+	0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, 0x4f, 0x55,
+	0x50, 0x5f, 0x42, 0x59, 0x5f, 0x43, 0x41, 0x4e, 0x4f, 0x4e, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x49,
+	0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x42, 0x59, 0x5f,
+	0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x47, 0x52, 0x4f, 0x55, 0x50,
+	0x5f, 0x42, 0x59, 0x5f, 0x44, 0x4f, 0x4d, 0x41, 0x49, 0x4e, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09,
+	0x41, 0x4c, 0x4c, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x41,
+	0x4c, 0x4c, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, 0x45, 0x44,
+	0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x07, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70,
+	0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x05,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x53, 0x63,
+	0x6f, 0x70, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12,
+	0x3d, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52,
+	0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26,
+	0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e,
+	0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x22, 0x3d, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73,
+	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x08,
+	0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x57, 0x52, 0x49, 0x54,
+	0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54,
+	0x52, 0x4f, 0x4c, 0x10, 0x03, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42,
+	0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0f,
+	0x0a, 0x0d, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22,
+	0x61, 0x0a, 0x11, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
+	0x4c, 0x69, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12,
+	0x27, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x0d, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x77, 0x6e,
+	0x65, 0x72, 0x22, 0xeb, 0x02, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x1e, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48,
+	0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x61,
+	0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08,
+	0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x02, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x03, 0x47, 0x65, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x1a, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x2e, 0x47, 0x65, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x48, 0x03, 0x52, 0x03,
+	0x47, 0x65, 0x6f, 0x88, 0x01, 0x01, 0x1a, 0x2d, 0x0a, 0x07, 0x47, 0x65, 0x6f, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03,
+	0x6c, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01,
+	0x52, 0x03, 0x6c, 0x6e, 0x67, 0x22, 0x4a, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x00, 0x12, 0x08,
+	0x0a, 0x04, 0x48, 0x54, 0x4d, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x54, 0x4f, 0x4d,
+	0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x54, 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06,
+	0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x4f, 0x10,
+	0x05, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6c,
+	0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x74, 0x72, 0x69,
+	0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x47, 0x65, 0x6f,
+	0x22, 0x45, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x54, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70,
+	0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
+	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
+	0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xd7, 0x01,
+	0x0a, 0x12, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x68, 0x61, 0x72, 0x64, 0x53, 0x65, 0x74, 0x74,
+	0x69, 0x6e, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x5f, 0x6e, 0x75, 0x6d,
+	0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x70,
+	0x72, 0x65, 0x76, 0x4e, 0x75, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
+	0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x09, 0x6e, 0x75, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x1c, 0x70,
+	0x72, 0x65, 0x76, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x73,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x05, 0x52, 0x18, 0x70, 0x72, 0x65, 0x76, 0x4e, 0x75, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73,
+	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x6c,
+	0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x69,
+	0x63, 0x61, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f,
+	0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x22, 0xb6, 0x01, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65,
+	0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x61,
+	0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
+	0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12,
+	0x26, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x22, 0x2d, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65,
+	0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00,
+	0x12, 0x08, 0x0a, 0x04, 0x41, 0x54, 0x4f, 0x4d, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x55,
+	0x4d, 0x42, 0x45, 0x52, 0x10, 0x04, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42,
+	0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x22, 0x45, 0x0a, 0x05, 0x46, 0x61, 0x63, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x10, 0x44, 0x6f, 0x63, 0x75,
+	0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x07,
+	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52,
+	0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x63,
+	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73,
+	0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6d,
+	0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x53, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88,
+	0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x17,
+	0x0a, 0x15, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x5f,
+	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb4, 0x03, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75,
+	0x6d, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x61, 0x6e,
+	0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x6c,
+	0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x05, 0x66, 0x69,
+	0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12,
+	0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x05, 0x48, 0x02, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12,
+	0x4b, 0x0a, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63,
+	0x68, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72,
+	0x49, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x03, 0x52, 0x0d, 0x6f, 0x72, 0x64, 0x65,
+	0x72, 0x49, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x07,
+	0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e,
+	0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
+	0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x04, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61,
+	0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x05, 0x66, 0x61, 0x63, 0x65, 0x74, 0x18, 0x08,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x61,
+	0x63, 0x65, 0x74, 0x52, 0x05, 0x66, 0x61, 0x63, 0x65, 0x74, 0x22, 0x2c, 0x0a, 0x0d, 0x4f, 0x72,
+	0x64, 0x65, 0x72, 0x49, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x44,
+	0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x55,
+	0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x10, 0x01, 0x22, 0x13, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x72,
+	0x61, 0x67, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x49, 0x53, 0x4b, 0x10, 0x00, 0x42, 0x05, 0x0a,
+	0x03, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,
+	0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x12,
+	0x0a, 0x10, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x22, 0xa8,
+	0x01, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x91, 0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43,
+	0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x49,
+	0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01,
+	0x12, 0x13, 0x0a, 0x0f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x52,
+	0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41,
+	0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52,
+	0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x04,
+	0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x05, 0x12, 0x1a, 0x0a,
+	0x16, 0x43, 0x4f, 0x4e, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e,
+	0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x22, 0xc1, 0x01, 0x0a, 0x0d, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x38, 0x0a, 0x04, 0x63,
+	0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52,
+	0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64,
+	0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x65,
+	0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a,
+	0x0e, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63,
+	0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x72,
+	0x72, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63,
+	0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xd8, 0x03,
+	0x0a, 0x09, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+	0x44, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e,
+	0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65,
+	0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
+	0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+	0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+	0x73, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
+	0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x07, 0x76, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
+	0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x48, 0x03, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f,
+	0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x73,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x2e,
+	0x4d, 0x6f, 0x64, 0x65, 0x48, 0x04, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x22,
+	0x2b, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x0a,
+	0x0a, 0x06, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x45,
+	0x52, 0x5f, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x22, 0x36, 0x0a, 0x06,
+	0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48,
+	0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x41, 0x54, 0x41, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x10,
+	0x01, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41,
+	0x47, 0x45, 0x10, 0x02, 0x22, 0x24, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0c, 0x0a, 0x08,
+	0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x41,
+	0x43, 0x4b, 0x47, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63,
+	0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e,
+	0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42,
+	0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x0d, 0x49, 0x6e, 0x64,
+	0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x0a, 0x69, 0x6e,
+	0x64, 0x65, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
+	0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65,
+	0x63, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x05,
+	0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65,
+	0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52,
+	0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3c, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67,
+	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
+	0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53,
+	0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67,
+	0x65, 0x88, 0x01, 0x01, 0x1a, 0x64, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12,
+	0x24, 0x0a, 0x0b, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73,
+	0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01,
+	0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64,
+	0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73,
+	0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x13, 0x49, 0x6e, 0x64, 0x65, 0x78,
+	0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2c,
+	0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x10, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65,
+	0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09,
+	0x66, 0x72, 0x65, 0x73, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x25, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x44, 0x6f,
+	0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x46, 0x72, 0x65,
+	0x73, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x09, 0x66, 0x72, 0x65, 0x73, 0x68, 0x6e,
+	0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f,
+	0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x61,
+	0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x69,
+	0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x22, 0x33, 0x0a, 0x09, 0x46, 0x72, 0x65, 0x73,
+	0x68, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59, 0x4e, 0x43, 0x48, 0x52, 0x4f,
+	0x4e, 0x4f, 0x55, 0x53, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x57, 0x48, 0x45, 0x4e,
+	0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x4e, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x42, 0x0c, 0x0a,
+	0x0a, 0x5f, 0x66, 0x72, 0x65, 0x73, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x72, 0x0a, 0x14, 0x49,
+	0x6e, 0x64, 0x65, 0x78, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x64,
+	0x65, 0x78, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f,
+	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49,
+	0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x22,
+	0x5d, 0x0a, 0x15, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63,
+	0x68, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x6f, 0x63, 0x5f, 0x69,
+	0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x64, 0x6f, 0x63, 0x49, 0x64, 0x22, 0x5f,
+	0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x6f, 0x63, 0x5f, 0x69, 0x64,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x64, 0x6f, 0x63, 0x49, 0x64, 0x12, 0x30, 0x0a,
+	0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78,
+	0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x22,
+	0x74, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61,
+	0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63,
+	0x68, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a,
+	0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00,
+	0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61,
+	0x70, 0x70, 0x5f, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44,
+	0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x15, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x9b,
+	0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73,
+	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f,
+	0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x61,
+	0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x69,
+	0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x12, 0x25, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x5f, 0x64, 0x6f, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+	0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x6f, 0x63, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12,
+	0x2f, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74,
+	0x5f, 0x64, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x69, 0x6e,
+	0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x6f, 0x63, 0x88, 0x01, 0x01,
+	0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x02, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6b,
+	0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03,
+	0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a,
+	0x0d, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x6f, 0x63, 0x5f, 0x69, 0x64, 0x42, 0x14,
+	0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74,
+	0x5f, 0x64, 0x6f, 0x63, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0c,
+	0x0a, 0x0a, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0x72, 0x0a, 0x14,
+	0x4c, 0x69, 0x73, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x4c, 0x69,
+	0x73, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d,
+	0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x06, 0x61, 0x70, 0x70,
+	0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70,
+	0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64,
+	0x22, 0x74, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61,
+	0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75,
+	0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x61,
+	0x72, 0x63, 0x68, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f,
+	0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xe4, 0x03, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49,
+	0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x0c,
+	0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x66, 0x65, 0x74, 0x63, 0x68, 0x53, 0x63, 0x68, 0x65, 0x6d,
+	0x61, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12,
+	0x21, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x09, 0x48, 0x02, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x88,
+	0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65,
+	0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0e,
+	0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01,
+	0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61,
+	0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04,
+	0x52, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e,
+	0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f,
+	0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x05, 0x52, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x72,
+	0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65,
+	0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65,
+	0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e,
+	0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x07,
+	0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f,
+	0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x08, 0x0a, 0x06,
+	0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+	0x70, 0x61, 0x63, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69,
+	0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x6e,
+	0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65,
+	0x78, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73,
+	0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x6e, 0x0a,
+	0x12, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x4c, 0x69, 0x73,
+	0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06,
+	0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x88,
+	0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x22, 0x82, 0x01,
+	0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6d, 0x65,
+	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64,
+	0x61, 0x74, 0x61, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+	0x74, 0x61, 0x22, 0x88, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68,
+	0x65, 0x6d, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x6f, 0x75,
+	0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x6f, 0x75,
+	0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x30, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e,
+	0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70,
+	0x65, 0x63, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x70, 0x0a,
+	0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x44, 0x65,
+	0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f,
+	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49,
+	0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x22,
+	0x45, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
+	0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
+	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x92, 0x02, 0x0a, 0x08, 0x53, 0x6f, 0x72, 0x74, 0x53,
+	0x70, 0x65, 0x63, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72,
+	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f,
+	0x72, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x0f,
+	0x73, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73,
+	0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
+	0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a,
+	0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6e,
+	0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x13,
+	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4e, 0x75, 0x6d, 0x65,
+	0x72, 0x69, 0x63, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f,
+	0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64,
+	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x65, 0x78,
+	0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x22, 0x85, 0x02, 0x0a, 0x0a,
+	0x53, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x63,
+	0x6f, 0x72, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x61,
+	0x72, 0x63, 0x68, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53,
+	0x63, 0x6f, 0x72, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x88,
+	0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x05, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a,
+	0x17, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x70, 0x61,
+	0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02,
+	0x52, 0x15, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x50, 0x61, 0x72,
+	0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x88, 0x01, 0x01, 0x22, 0x36, 0x0a, 0x06, 0x53, 0x63,
+	0x6f, 0x72, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x45, 0x53, 0x43, 0x4f, 0x52, 0x49, 0x4e,
+	0x47, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x52, 0x10, 0x00,
+	0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x52,
+	0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x42, 0x08, 0x0a,
+	0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6d, 0x61, 0x74, 0x63,
+	0x68, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
+	0x65, 0x72, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x70, 0x65,
+	0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
+	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73,
+	0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x45, 0x78, 0x70,
+	0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x45, 0x78, 0x70,
+	0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x44, 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x72, 0x65,
+	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a,
+	0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x72, 0x0a,
+	0x0a, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12,
+	0x15, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x03,
+	0x65, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42,
+	0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x65, 0x6e,
+	0x64, 0x22, 0x9e, 0x01, 0x0a, 0x11, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0a,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a,
+	0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65,
+	0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x09, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69,
+	0x6e, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x6d,
+	0x69, 0x74, 0x22, 0x4c, 0x0a, 0x14, 0x46, 0x61, 0x63, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x44,
+	0x65, 0x74, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x24, 0x0a, 0x0b, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01,
+	0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+	0x22, 0x65, 0x0a, 0x0c, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x61,
+	0x63, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x48,
+	0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07,
+	0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xdb, 0x01, 0x0a, 0x0f, 0x46, 0x61, 0x63, 0x65,
+	0x74, 0x52, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+	0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x05, 0x72, 0x61,
+	0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65,
+	0x6e, 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67,
+	0x65, 0x88, 0x01, 0x01, 0x1a, 0x4b, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x19, 0x0a,
+	0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05,
+	0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42,
+	0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x65, 0x6e,
+	0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f,
+	0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xa7, 0x09, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
+	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x30, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f,
+	0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x61,
+	0x72, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x69,
+	0x6e, 0x64, 0x65, 0x78, 0x53, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72,
+	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1b,
+	0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+	0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f,
+	0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x06, 0x6f,
+	0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x73,
+	0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e,
+	0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72,
+	0x61, 0x6d, 0x73, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x48, 0x02,
+	0x52, 0x0a, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12,
+	0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03,
+	0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x6d, 0x61,
+	0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x75,
+	0x72, 0x61, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x14, 0x6d, 0x61,
+	0x74, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x75, 0x72, 0x61,
+	0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x70,
+	0x65, 0x63, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63,
+	0x68, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x73, 0x6f, 0x72, 0x74,
+	0x53, 0x70, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x5f, 0x73,
+	0x70, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x61, 0x72,
+	0x63, 0x68, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x48, 0x05, 0x52,
+	0x0a, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x35,
+	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x0a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x69, 0x65, 0x6c,
+	0x64, 0x53, 0x70, 0x65, 0x63, 0x48, 0x06, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x70,
+	0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e,
+	0x6c, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x07, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73,
+	0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x73, 0x69,
+	0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e,
+	0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72,
+	0x61, 0x6d, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x48,
+	0x08, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01,
+	0x01, 0x12, 0x3e, 0x0a, 0x19, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76,
+	0x65, 0x72, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x09, 0x52, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x44, 0x69, 0x73, 0x63,
+	0x6f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x63, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01,
+	0x01, 0x12, 0x39, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x63,
+	0x65, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63,
+	0x68, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0c,
+	0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, 0x61, 0x63, 0x65, 0x74, 0x12, 0x42, 0x0a, 0x10,
+	0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e,
+	0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52,
+	0x0f, 0x66, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x12, 0x58, 0x0a, 0x17, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x64,
+	0x65, 0x74, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74,
+	0x41, 0x75, 0x74, 0x6f, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x48,
+	0x0a, 0x52, 0x14, 0x66, 0x61, 0x63, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x44, 0x65, 0x74, 0x65,
+	0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x66, 0x61,
+	0x63, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x0b, 0x52, 0x0a, 0x66, 0x61, 0x63, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x88, 0x01, 0x01,
+	0x22, 0x32, 0x0a, 0x0a, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08,
+	0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4e, 0x47,
+	0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x55,
+	0x4c, 0x54, 0x10, 0x02, 0x22, 0x26, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x4d,
+	0x6f, 0x64, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x10, 0x00, 0x12,
+	0x0b, 0x0a, 0x07, 0x52, 0x45, 0x4c, 0x41, 0x58, 0x45, 0x44, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07,
+	0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73,
+	0x65, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x5f, 0x74, 0x79,
+	0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x19, 0x0a, 0x17,
+	0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61,
+	0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x63, 0x6f, 0x72,
+	0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x69, 0x65, 0x6c,
+	0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x5f,
+	0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67,
+	0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x64,
+	0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x63, 0x6f,
+	0x75, 0x6e, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x61, 0x75,
+	0x74, 0x6f, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x42,
+	0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x22,
+	0x64, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x14, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
+	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a,
+	0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00,
+	0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61,
+	0x70, 0x70, 0x5f, 0x69, 0x64, 0x22, 0x75, 0x0a, 0x10, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65,
+	0x73, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a,
+	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f,
+	0x75, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
+	0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x52, 0x0a, 0x72, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x51, 0x0a, 0x0b,
+	0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+	0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18,
+	0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x65, 0x73,
+	0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22,
+	0xa9, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+	0x12, 0x2c, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x44, 0x6f, 0x63, 0x75,
+	0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d,
+	0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x69, 0x65, 0x6c,
+	0x64, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a,
+	0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x01, 0x52, 0x05, 0x73, 0x63,
+	0x6f, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01,
+	0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xf2, 0x01, 0x0a, 0x0e,
+	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c,
+	0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
+	0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
+	0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0d,
+	0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e,
+	0x74, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a,
+	0x0c, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x46, 0x61, 0x63,
+	0x65, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x66, 0x61, 0x63, 0x65, 0x74, 0x52,
+	0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72,
+	0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
+	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f,
+	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x62,
+	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_search_proto_rawDescOnce sync.Once
+	file_search_proto_rawDescData = file_search_proto_rawDesc
+)
+
+func file_search_proto_rawDescGZIP() []byte {
+	file_search_proto_rawDescOnce.Do(func() {
+		file_search_proto_rawDescData = protoimpl.X.CompressGZIP(file_search_proto_rawDescData)
+	})
+	return file_search_proto_rawDescData
+}
+
+var file_search_proto_enumTypes = make([]protoimpl.EnumInfo, 14)
+var file_search_proto_msgTypes = make([]protoimpl.MessageInfo, 48)
+var file_search_proto_goTypes = []interface{}{
+	(Scope_Type)(0),                    // 0: search.Scope.Type
+	(Entry_Permission)(0),              // 1: search.Entry.Permission
+	(FieldValue_ContentType)(0),        // 2: search.FieldValue.ContentType
+	(FacetValue_ContentType)(0),        // 3: search.FacetValue.ContentType
+	(Document_OrderIdSource)(0),        // 4: search.Document.OrderIdSource
+	(Document_Storage)(0),              // 5: search.Document.Storage
+	(SearchServiceError_ErrorCode)(0),  // 6: search.SearchServiceError.ErrorCode
+	(IndexSpec_Consistency)(0),         // 7: search.IndexSpec.Consistency
+	(IndexSpec_Source)(0),              // 8: search.IndexSpec.Source
+	(IndexSpec_Mode)(0),                // 9: search.IndexSpec.Mode
+	(IndexDocumentParams_Freshness)(0), // 10: search.IndexDocumentParams.Freshness
+	(ScorerSpec_Scorer)(0),             // 11: search.ScorerSpec.Scorer
+	(SearchParams_CursorType)(0),       // 12: search.SearchParams.CursorType
+	(SearchParams_ParsingMode)(0),      // 13: search.SearchParams.ParsingMode
+	(*Scope)(nil),                      // 14: search.Scope
+	(*Entry)(nil),                      // 15: search.Entry
+	(*AccessControlList)(nil),          // 16: search.AccessControlList
+	(*FieldValue)(nil),                 // 17: search.FieldValue
+	(*Field)(nil),                      // 18: search.Field
+	(*FieldTypes)(nil),                 // 19: search.FieldTypes
+	(*IndexShardSettings)(nil),         // 20: search.IndexShardSettings
+	(*FacetValue)(nil),                 // 21: search.FacetValue
+	(*Facet)(nil),                      // 22: search.Facet
+	(*DocumentMetadata)(nil),           // 23: search.DocumentMetadata
+	(*Document)(nil),                   // 24: search.Document
+	(*SearchServiceError)(nil),         // 25: search.SearchServiceError
+	(*RequestStatus)(nil),              // 26: search.RequestStatus
+	(*IndexSpec)(nil),                  // 27: search.IndexSpec
+	(*IndexMetadata)(nil),              // 28: search.IndexMetadata
+	(*IndexDocumentParams)(nil),        // 29: search.IndexDocumentParams
+	(*IndexDocumentRequest)(nil),       // 30: search.IndexDocumentRequest
+	(*IndexDocumentResponse)(nil),      // 31: search.IndexDocumentResponse
+	(*DeleteDocumentParams)(nil),       // 32: search.DeleteDocumentParams
+	(*DeleteDocumentRequest)(nil),      // 33: search.DeleteDocumentRequest
+	(*DeleteDocumentResponse)(nil),     // 34: search.DeleteDocumentResponse
+	(*ListDocumentsParams)(nil),        // 35: search.ListDocumentsParams
+	(*ListDocumentsRequest)(nil),       // 36: search.ListDocumentsRequest
+	(*ListDocumentsResponse)(nil),      // 37: search.ListDocumentsResponse
+	(*ListIndexesParams)(nil),          // 38: search.ListIndexesParams
+	(*ListIndexesRequest)(nil),         // 39: search.ListIndexesRequest
+	(*ListIndexesResponse)(nil),        // 40: search.ListIndexesResponse
+	(*DeleteSchemaParams)(nil),         // 41: search.DeleteSchemaParams
+	(*DeleteSchemaRequest)(nil),        // 42: search.DeleteSchemaRequest
+	(*DeleteSchemaResponse)(nil),       // 43: search.DeleteSchemaResponse
+	(*SortSpec)(nil),                   // 44: search.SortSpec
+	(*ScorerSpec)(nil),                 // 45: search.ScorerSpec
+	(*FieldSpec)(nil),                  // 46: search.FieldSpec
+	(*FacetRange)(nil),                 // 47: search.FacetRange
+	(*FacetRequestParam)(nil),          // 48: search.FacetRequestParam
+	(*FacetAutoDetectParam)(nil),       // 49: search.FacetAutoDetectParam
+	(*FacetRequest)(nil),               // 50: search.FacetRequest
+	(*FacetRefinement)(nil),            // 51: search.FacetRefinement
+	(*SearchParams)(nil),               // 52: search.SearchParams
+	(*SearchRequest)(nil),              // 53: search.SearchRequest
+	(*FacetResultValue)(nil),           // 54: search.FacetResultValue
+	(*FacetResult)(nil),                // 55: search.FacetResult
+	(*SearchResult)(nil),               // 56: search.SearchResult
+	(*SearchResponse)(nil),             // 57: search.SearchResponse
+	(*FieldValue_GeoType)(nil),         // 58: search.FieldValue.GeoType
+	(*IndexMetadata_Storage)(nil),      // 59: search.IndexMetadata.Storage
+	(*FieldSpec_ExpressionType)(nil),   // 60: search.FieldSpec.ExpressionType
+	(*FacetRefinement_Range)(nil),      // 61: search.FacetRefinement.Range
+}
+var file_search_proto_depIdxs = []int32{
+	0,  // 0: search.Scope.type:type_name -> search.Scope.Type
+	14, // 1: search.Entry.scope:type_name -> search.Scope
+	1,  // 2: search.Entry.permission:type_name -> search.Entry.Permission
+	15, // 3: search.AccessControlList.entries:type_name -> search.Entry
+	2,  // 4: search.FieldValue.type:type_name -> search.FieldValue.ContentType
+	58, // 5: search.FieldValue.Geo:type_name -> search.FieldValue.GeoType
+	17, // 6: search.Field.value:type_name -> search.FieldValue
+	2,  // 7: search.FieldTypes.type:type_name -> search.FieldValue.ContentType
+	3,  // 8: search.FacetValue.type:type_name -> search.FacetValue.ContentType
+	21, // 9: search.Facet.value:type_name -> search.FacetValue
+	18, // 10: search.Document.field:type_name -> search.Field
+	4,  // 11: search.Document.order_id_source:type_name -> search.Document.OrderIdSource
+	5,  // 12: search.Document.storage:type_name -> search.Document.Storage
+	22, // 13: search.Document.facet:type_name -> search.Facet
+	6,  // 14: search.RequestStatus.code:type_name -> search.SearchServiceError.ErrorCode
+	7,  // 15: search.IndexSpec.consistency:type_name -> search.IndexSpec.Consistency
+	8,  // 16: search.IndexSpec.source:type_name -> search.IndexSpec.Source
+	9,  // 17: search.IndexSpec.mode:type_name -> search.IndexSpec.Mode
+	27, // 18: search.IndexMetadata.index_spec:type_name -> search.IndexSpec
+	19, // 19: search.IndexMetadata.field:type_name -> search.FieldTypes
+	59, // 20: search.IndexMetadata.storage:type_name -> search.IndexMetadata.Storage
+	24, // 21: search.IndexDocumentParams.document:type_name -> search.Document
+	10, // 22: search.IndexDocumentParams.freshness:type_name -> search.IndexDocumentParams.Freshness
+	27, // 23: search.IndexDocumentParams.index_spec:type_name -> search.IndexSpec
+	29, // 24: search.IndexDocumentRequest.params:type_name -> search.IndexDocumentParams
+	26, // 25: search.IndexDocumentResponse.status:type_name -> search.RequestStatus
+	27, // 26: search.DeleteDocumentParams.index_spec:type_name -> search.IndexSpec
+	32, // 27: search.DeleteDocumentRequest.params:type_name -> search.DeleteDocumentParams
+	26, // 28: search.DeleteDocumentResponse.status:type_name -> search.RequestStatus
+	27, // 29: search.ListDocumentsParams.index_spec:type_name -> search.IndexSpec
+	35, // 30: search.ListDocumentsRequest.params:type_name -> search.ListDocumentsParams
+	26, // 31: search.ListDocumentsResponse.status:type_name -> search.RequestStatus
+	24, // 32: search.ListDocumentsResponse.document:type_name -> search.Document
+	8,  // 33: search.ListIndexesParams.source:type_name -> search.IndexSpec.Source
+	38, // 34: search.ListIndexesRequest.params:type_name -> search.ListIndexesParams
+	26, // 35: search.ListIndexesResponse.status:type_name -> search.RequestStatus
+	28, // 36: search.ListIndexesResponse.index_metadata:type_name -> search.IndexMetadata
+	8,  // 37: search.DeleteSchemaParams.source:type_name -> search.IndexSpec.Source
+	27, // 38: search.DeleteSchemaParams.index_spec:type_name -> search.IndexSpec
+	41, // 39: search.DeleteSchemaRequest.params:type_name -> search.DeleteSchemaParams
+	26, // 40: search.DeleteSchemaResponse.status:type_name -> search.RequestStatus
+	11, // 41: search.ScorerSpec.scorer:type_name -> search.ScorerSpec.Scorer
+	60, // 42: search.FieldSpec.Expression:type_name -> search.FieldSpec.ExpressionType
+	47, // 43: search.FacetRequestParam.range:type_name -> search.FacetRange
+	48, // 44: search.FacetRequest.params:type_name -> search.FacetRequestParam
+	61, // 45: search.FacetRefinement.range:type_name -> search.FacetRefinement.Range
+	27, // 46: search.SearchParams.index_spec:type_name -> search.IndexSpec
+	12, // 47: search.SearchParams.cursor_type:type_name -> search.SearchParams.CursorType
+	44, // 48: search.SearchParams.sort_spec:type_name -> search.SortSpec
+	45, // 49: search.SearchParams.scorer_spec:type_name -> search.ScorerSpec
+	46, // 50: search.SearchParams.field_spec:type_name -> search.FieldSpec
+	13, // 51: search.SearchParams.parsing_mode:type_name -> search.SearchParams.ParsingMode
+	50, // 52: search.SearchParams.include_facet:type_name -> search.FacetRequest
+	51, // 53: search.SearchParams.facet_refinement:type_name -> search.FacetRefinement
+	49, // 54: search.SearchParams.facet_auto_detect_param:type_name -> search.FacetAutoDetectParam
+	52, // 55: search.SearchRequest.params:type_name -> search.SearchParams
+	51, // 56: search.FacetResultValue.refinement:type_name -> search.FacetRefinement
+	54, // 57: search.FacetResult.value:type_name -> search.FacetResultValue
+	24, // 58: search.SearchResult.document:type_name -> search.Document
+	18, // 59: search.SearchResult.expression:type_name -> search.Field
+	56, // 60: search.SearchResponse.result:type_name -> search.SearchResult
+	26, // 61: search.SearchResponse.status:type_name -> search.RequestStatus
+	55, // 62: search.SearchResponse.facet_result:type_name -> search.FacetResult
+	63, // [63:63] is the sub-list for method output_type
+	63, // [63:63] is the sub-list for method input_type
+	63, // [63:63] is the sub-list for extension type_name
+	63, // [63:63] is the sub-list for extension extendee
+	0,  // [0:63] is the sub-list for field type_name
+}
+
+func init() { file_search_proto_init() }
+func file_search_proto_init() {
+	if File_search_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_search_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Scope); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[1].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_search_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AccessControlList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FieldValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Field); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FieldTypes); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IndexShardSettings); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FacetValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Facet); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DocumentMetadata); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Document); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SearchServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RequestStatus); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IndexSpec); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IndexMetadata); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IndexDocumentParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IndexDocumentRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IndexDocumentResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteDocumentParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteDocumentRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteDocumentResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ListDocumentsParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ListDocumentsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ListDocumentsResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ListIndexesParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ListIndexesRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ListIndexesResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteSchemaParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteSchemaRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteSchemaResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SortSpec); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ScorerSpec); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FieldSpec); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FacetRange); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FacetRequestParam); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FacetAutoDetectParam); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FacetRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FacetRefinement); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SearchParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SearchRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FacetResultValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FacetResult); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SearchResult); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SearchResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FieldValue_GeoType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IndexMetadata_Storage); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FieldSpec_ExpressionType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_search_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FacetRefinement_Range); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_search_proto_msgTypes[0].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[6].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[7].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[9].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[10].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[12].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[13].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[14].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[15].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[16].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[19].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[21].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[22].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[24].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[25].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[27].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[28].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[30].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[31].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[33].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[34].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[35].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[36].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[37].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[38].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[39].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[42].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[43].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[45].OneofWrappers = []interface{}{}
+	file_search_proto_msgTypes[47].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_search_proto_rawDesc,
+			NumEnums:      14,
+			NumMessages:   48,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_search_proto_goTypes,
+		DependencyIndexes: file_search_proto_depIdxs,
+		EnumInfos:         file_search_proto_enumTypes,
+		MessageInfos:      file_search_proto_msgTypes,
+	}.Build()
+	File_search_proto = out.File
+	file_search_proto_rawDesc = nil
+	file_search_proto_goTypes = nil
+	file_search_proto_depIdxs = nil
 }
diff --git a/internal/search/search.proto b/internal/search/search.proto
index 61df6508..bd54c6f7 100644
--- a/internal/search/search.proto
+++ b/internal/search/search.proto
@@ -1,10 +1,11 @@
-syntax = "proto2";
-option go_package = "search";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/search";
 
 package search;
 
 message Scope {
   enum Type {
+    NONE = 0;
     USER_BY_CANONICAL_ID = 1;
     USER_BY_EMAIL = 2;
     GROUP_BY_CANONICAL_ID = 3;
@@ -20,6 +21,7 @@ message Scope {
 
 message Entry {
   enum Permission {
+    NONE = 0;
     READ = 1;
     WRITE = 2;
     FULL_CONTROL = 3;
@@ -45,48 +47,50 @@ message FieldValue {
     GEO = 5;
   }
 
-  optional ContentType type = 1 [default = TEXT];
+  optional ContentType type = 1;
 
-  optional string language = 2 [default = "en"];
+  optional string language = 2;
 
   optional string string_value = 3;
 
-  optional group Geo = 4 {
-    required double lat = 5;
-    required double lng = 6;
+  optional GeoType Geo = 4;
+  message GeoType {
+    double lat = 5;
+    double lng = 6;
   }
 }
 
 message Field {
-  required string name = 1;
-  required FieldValue value = 2;
+  string name = 1;
+  FieldValue value = 2;
 }
 
 message FieldTypes {
-  required string name = 1;
+  string name = 1;
   repeated FieldValue.ContentType type = 2;
 }
 
 message IndexShardSettings {
   repeated int32 prev_num_shards = 1;
-  required int32 num_shards = 2 [default=1];
+  int32 num_shards = 2 ;
   repeated int32 prev_num_shards_search_false = 3;
-  optional string local_replica = 4 [default = ""];
+  optional string local_replica = 4 ;
 }
 
 message FacetValue {
   enum ContentType {
+    NONE = 0;
     ATOM = 2;
     NUMBER = 4;
   }
 
-  optional ContentType type = 1 [default = ATOM];
+  optional ContentType type = 1;
   optional string string_value = 3;
 }
 
 message Facet {
-  required string name = 1;
-  required FacetValue value = 2;
+  string name = 1;
+  FacetValue value = 2;
 }
 
 message DocumentMetadata  {
@@ -96,10 +100,10 @@ message DocumentMetadata  {
 
 message Document {
   optional string id = 1;
-  optional string language = 2 [default = "en"];
+  optional string language = 2;
   repeated Field field = 3;
   optional int32 order_id = 4;
-  optional OrderIdSource order_id_source = 6 [default = SUPPLIED];
+  optional OrderIdSource order_id_source = 6;
 
   enum OrderIdSource {
     DEFAULTED = 0;
@@ -110,7 +114,7 @@ message Document {
     DISK = 0;
   }
 
-  optional Storage storage = 5 [default = DISK];
+  optional Storage storage = 5;
   repeated Facet facet = 8;
 }
 
@@ -127,19 +131,19 @@ message SearchServiceError {
 }
 
 message RequestStatus {
-  required SearchServiceError.ErrorCode code = 1;
+  SearchServiceError.ErrorCode code = 1;
   optional string error_detail = 2;
   optional int32 canonical_code = 3;
 }
 
 message IndexSpec {
-  required string name = 1;
+  string name = 1;
 
   enum Consistency {
     GLOBAL = 0;
     PER_DOCUMENT = 1;
   }
-  optional Consistency consistency = 2 [default = PER_DOCUMENT];
+  optional Consistency consistency = 2;
 
   optional string namespace = 3;
   optional int32 version = 4;
@@ -149,17 +153,17 @@ message IndexSpec {
     DATASTORE = 1;
     CLOUD_STORAGE = 2;
   }
-  optional Source source = 5 [default = SEARCH];
+  optional Source source = 5;
 
   enum Mode {
     PRIORITY = 0;
     BACKGROUND = 1;
   }
-  optional Mode mode = 6 [default = PRIORITY];
+  optional Mode mode = 6;
 }
 
 message IndexMetadata {
-  required IndexSpec index_spec = 1;
+  IndexSpec index_spec = 1;
 
   repeated FieldTypes field = 2;
 
@@ -177,13 +181,13 @@ message IndexDocumentParams {
     SYNCHRONOUSLY = 0;
     WHEN_CONVENIENT = 1;
   }
-  optional Freshness freshness = 2 [default = SYNCHRONOUSLY, deprecated=true];
+  optional Freshness freshness = 2;
 
-  required IndexSpec index_spec = 3;
+  IndexSpec index_spec = 3;
 }
 
 message IndexDocumentRequest {
-  required IndexDocumentParams params = 1;
+  IndexDocumentParams params = 1;
 
   optional bytes app_id = 3;
 }
@@ -197,11 +201,11 @@ message IndexDocumentResponse {
 message DeleteDocumentParams {
   repeated string doc_id = 1;
 
-  required IndexSpec index_spec = 2;
+  IndexSpec index_spec = 2;
 }
 
 message DeleteDocumentRequest {
-  required DeleteDocumentParams params = 1;
+  DeleteDocumentParams params = 1;
 
   optional bytes app_id = 3;
 }
@@ -211,54 +215,54 @@ message DeleteDocumentResponse {
 }
 
 message ListDocumentsParams {
-  required IndexSpec index_spec = 1;
+ IndexSpec index_spec = 1;
   optional string start_doc_id = 2;
-  optional bool include_start_doc = 3 [default = true];
-  optional int32 limit = 4 [default = 100];
+  optional bool include_start_doc = 3 ;
+  optional int32 limit = 4;
   optional bool keys_only = 5;
 }
 
 message ListDocumentsRequest {
-  required ListDocumentsParams params = 1;
+ ListDocumentsParams params = 1;
 
   optional bytes app_id = 2;
 }
 
 message ListDocumentsResponse {
-  required RequestStatus status = 1;
+ RequestStatus status = 1;
 
   repeated Document document = 2;
 }
 
 message ListIndexesParams {
   optional bool fetch_schema = 1;
-  optional int32 limit = 2 [default = 20];
+  optional int32 limit = 2;
   optional string namespace = 3;
   optional string start_index_name = 4;
-  optional bool include_start_index = 5 [default = true];
+  optional bool include_start_index = 5 ;
   optional string index_name_prefix = 6;
   optional int32 offset = 7;
-  optional IndexSpec.Source source = 8 [default = SEARCH];
+  optional IndexSpec.Source source = 8;
 }
 
 message ListIndexesRequest {
-  required ListIndexesParams params = 1;
+ ListIndexesParams params = 1;
 
   optional bytes app_id = 3;
 }
 
 message ListIndexesResponse {
-  required RequestStatus status = 1;
+ RequestStatus status = 1;
   repeated IndexMetadata index_metadata = 2;
 }
 
 message DeleteSchemaParams {
-  optional IndexSpec.Source source = 1 [default = SEARCH];
+  optional IndexSpec.Source source = 1;
   repeated IndexSpec index_spec = 2;
 }
 
 message DeleteSchemaRequest {
-  required DeleteSchemaParams params = 1;
+ DeleteSchemaParams params = 1;
 
   optional bytes app_id = 3;
 }
@@ -268,8 +272,8 @@ message DeleteSchemaResponse {
 }
 
 message SortSpec {
-  required string sort_expression = 1;
-  optional bool sort_descending = 2 [default = true];
+ string sort_expression = 1;
+  optional bool sort_descending = 2 ;
   optional string default_value_text = 4;
   optional double default_value_numeric = 5;
 }
@@ -279,18 +283,19 @@ message ScorerSpec {
     RESCORING_MATCH_SCORER = 0;
     MATCH_SCORER = 2;
   }
-  optional Scorer scorer = 1 [default = MATCH_SCORER];
+  optional Scorer scorer = 1;
 
-  optional int32 limit = 2 [default = 1000];
+  optional int32 limit = 2;
   optional string match_scorer_parameters = 9;
 }
 
 message FieldSpec {
   repeated string name = 1;
 
-  repeated group Expression = 2 {
-    required string name = 3;
-    required string expression = 4;
+  repeated ExpressionType Expression = 2;
+  message ExpressionType {
+   string name = 3;
+   string expression = 4;
   }
 }
 
@@ -307,16 +312,16 @@ message FacetRequestParam {
 }
 
 message FacetAutoDetectParam {
-  optional int32 value_limit = 1 [default = 10];
+  optional int32 value_limit = 1;
 }
 
 message FacetRequest {
-  required string name = 1;
+ string name = 1;
   optional FacetRequestParam params = 2;
 }
 
 message FacetRefinement {
-  required string name = 1;
+ string name = 1;
   optional string value = 2;
 
   message Range {
@@ -327,8 +332,8 @@ message FacetRefinement {
 }
 
 message SearchParams {
-  required IndexSpec index_spec = 1;
-  required string query = 2;
+ IndexSpec index_spec = 1;
+ string query = 2;
   optional string cursor = 4;
   optional int32 offset = 11;
 
@@ -337,9 +342,9 @@ message SearchParams {
     SINGLE = 1;
     PER_RESULT = 2;
   }
-  optional CursorType cursor_type = 5 [default = NONE];
+  optional CursorType cursor_type = 5;
 
-  optional int32 limit = 6 [default = 20];
+  optional int32 limit = 6;
   optional int32 matched_count_accuracy = 7;
   repeated SortSpec sort_spec = 8;
   optional ScorerSpec scorer_spec = 9;
@@ -350,34 +355,34 @@ message SearchParams {
     STRICT = 0;
     RELAXED = 1;
   }
-  optional ParsingMode parsing_mode = 13 [default = STRICT];
+  optional ParsingMode parsing_mode = 13;
 
-  optional int32 auto_discover_facet_count = 15 [default = 0];
+  optional int32 auto_discover_facet_count = 15;
   repeated FacetRequest include_facet = 16;
   repeated FacetRefinement facet_refinement = 17;
   optional FacetAutoDetectParam facet_auto_detect_param = 18;
-  optional int32 facet_depth = 19 [default=1000];
+  optional int32 facet_depth = 19 ;
 }
 
 message SearchRequest {
-  required SearchParams params = 1;
+ SearchParams params = 1;
 
   optional bytes app_id = 3;
 }
 
 message FacetResultValue {
-  required string name = 1;
-  required int32 count = 2;
-  required FacetRefinement refinement = 3;
+ string name = 1;
+ int32 count = 2;
+ FacetRefinement refinement = 3;
 }
 
 message FacetResult {
-  required string name = 1;
+ string name = 1;
   repeated FacetResultValue value = 2;
 }
 
 message SearchResult {
-  required Document document = 1;
+ Document document = 1;
   repeated Field expression = 4;
   repeated double score = 2;
   optional string cursor = 3;
@@ -385,10 +390,9 @@ message SearchResult {
 
 message SearchResponse {
   repeated SearchResult result = 1;
-  required int64 matched_count = 2;
-  required RequestStatus status = 3;
-  optional string cursor = 4;
-  repeated FacetResult facet_result = 5;
+ int64 matched_count = 2;
+ RequestStatus status = 3;
+ optional string cursor = 4;
+ repeated FacetResult facet_result = 5;
 
-  extensions 1000 to 9999;
 }
diff --git a/internal/socket/socket_service.pb.go b/internal/socket/socket_service.pb.go
index 4ec872e4..1ba58c18 100644
--- a/internal/socket/socket_service.pb.go
+++ b/internal/socket/socket_service.pb.go
@@ -1,26 +1,29 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/socket/socket_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: socket_service.proto
 
 package socket
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 RemoteSocketServiceError_ErrorCode int32
 
 const (
+	RemoteSocketServiceError_NONE              RemoteSocketServiceError_ErrorCode = 0
 	RemoteSocketServiceError_SYSTEM_ERROR      RemoteSocketServiceError_ErrorCode = 1
 	RemoteSocketServiceError_GAI_ERROR         RemoteSocketServiceError_ErrorCode = 2
 	RemoteSocketServiceError_FAILURE           RemoteSocketServiceError_ErrorCode = 4
@@ -29,41 +32,53 @@ const (
 	RemoteSocketServiceError_SOCKET_CLOSED     RemoteSocketServiceError_ErrorCode = 7
 )
 
-var RemoteSocketServiceError_ErrorCode_name = map[int32]string{
-	1: "SYSTEM_ERROR",
-	2: "GAI_ERROR",
-	4: "FAILURE",
-	5: "PERMISSION_DENIED",
-	6: "INVALID_REQUEST",
-	7: "SOCKET_CLOSED",
-}
-var RemoteSocketServiceError_ErrorCode_value = map[string]int32{
-	"SYSTEM_ERROR":      1,
-	"GAI_ERROR":         2,
-	"FAILURE":           4,
-	"PERMISSION_DENIED": 5,
-	"INVALID_REQUEST":   6,
-	"SOCKET_CLOSED":     7,
-}
+// Enum value maps for RemoteSocketServiceError_ErrorCode.
+var (
+	RemoteSocketServiceError_ErrorCode_name = map[int32]string{
+		0: "NONE",
+		1: "SYSTEM_ERROR",
+		2: "GAI_ERROR",
+		4: "FAILURE",
+		5: "PERMISSION_DENIED",
+		6: "INVALID_REQUEST",
+		7: "SOCKET_CLOSED",
+	}
+	RemoteSocketServiceError_ErrorCode_value = map[string]int32{
+		"NONE":              0,
+		"SYSTEM_ERROR":      1,
+		"GAI_ERROR":         2,
+		"FAILURE":           4,
+		"PERMISSION_DENIED": 5,
+		"INVALID_REQUEST":   6,
+		"SOCKET_CLOSED":     7,
+	}
+)
 
 func (x RemoteSocketServiceError_ErrorCode) Enum() *RemoteSocketServiceError_ErrorCode {
 	p := new(RemoteSocketServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x RemoteSocketServiceError_ErrorCode) String() string {
-	return proto.EnumName(RemoteSocketServiceError_ErrorCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *RemoteSocketServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(RemoteSocketServiceError_ErrorCode_value, data, "RemoteSocketServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = RemoteSocketServiceError_ErrorCode(value)
-	return nil
+
+func (RemoteSocketServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_socket_service_proto_enumTypes[0].Descriptor()
+}
+
+func (RemoteSocketServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_socket_service_proto_enumTypes[0]
+}
+
+func (x RemoteSocketServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use RemoteSocketServiceError_ErrorCode.Descriptor instead.
 func (RemoteSocketServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{0, 0}
+	return file_socket_service_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type RemoteSocketServiceError_SystemError int32
@@ -200,374 +215,407 @@ const (
 	RemoteSocketServiceError_SYS_EKEYEXPIRED     RemoteSocketServiceError_SystemError = 127
 	RemoteSocketServiceError_SYS_EKEYREVOKED     RemoteSocketServiceError_SystemError = 128
 	RemoteSocketServiceError_SYS_EKEYREJECTED    RemoteSocketServiceError_SystemError = 129
-	RemoteSocketServiceError_SYS_EOWNERDEAD      RemoteSocketServiceError_SystemError = 130
 	RemoteSocketServiceError_SYS_ENOTRECOVERABLE RemoteSocketServiceError_SystemError = 131
 	RemoteSocketServiceError_SYS_ERFKILL         RemoteSocketServiceError_SystemError = 132
 )
 
-var RemoteSocketServiceError_SystemError_name = map[int32]string{
-	0:  "SYS_SUCCESS",
-	1:  "SYS_EPERM",
-	2:  "SYS_ENOENT",
-	3:  "SYS_ESRCH",
-	4:  "SYS_EINTR",
-	5:  "SYS_EIO",
-	6:  "SYS_ENXIO",
-	7:  "SYS_E2BIG",
-	8:  "SYS_ENOEXEC",
-	9:  "SYS_EBADF",
-	10: "SYS_ECHILD",
-	11: "SYS_EAGAIN",
-	// Duplicate value: 11: "SYS_EWOULDBLOCK",
-	12: "SYS_ENOMEM",
-	13: "SYS_EACCES",
-	14: "SYS_EFAULT",
-	15: "SYS_ENOTBLK",
-	16: "SYS_EBUSY",
-	17: "SYS_EEXIST",
-	18: "SYS_EXDEV",
-	19: "SYS_ENODEV",
-	20: "SYS_ENOTDIR",
-	21: "SYS_EISDIR",
-	22: "SYS_EINVAL",
-	23: "SYS_ENFILE",
-	24: "SYS_EMFILE",
-	25: "SYS_ENOTTY",
-	26: "SYS_ETXTBSY",
-	27: "SYS_EFBIG",
-	28: "SYS_ENOSPC",
-	29: "SYS_ESPIPE",
-	30: "SYS_EROFS",
-	31: "SYS_EMLINK",
-	32: "SYS_EPIPE",
-	33: "SYS_EDOM",
-	34: "SYS_ERANGE",
-	35: "SYS_EDEADLK",
-	// Duplicate value: 35: "SYS_EDEADLOCK",
-	36: "SYS_ENAMETOOLONG",
-	37: "SYS_ENOLCK",
-	38: "SYS_ENOSYS",
-	39: "SYS_ENOTEMPTY",
-	40: "SYS_ELOOP",
-	42: "SYS_ENOMSG",
-	43: "SYS_EIDRM",
-	44: "SYS_ECHRNG",
-	45: "SYS_EL2NSYNC",
-	46: "SYS_EL3HLT",
-	47: "SYS_EL3RST",
-	48: "SYS_ELNRNG",
-	49: "SYS_EUNATCH",
-	50: "SYS_ENOCSI",
-	51: "SYS_EL2HLT",
-	52: "SYS_EBADE",
-	53: "SYS_EBADR",
-	54: "SYS_EXFULL",
-	55: "SYS_ENOANO",
-	56: "SYS_EBADRQC",
-	57: "SYS_EBADSLT",
-	59: "SYS_EBFONT",
-	60: "SYS_ENOSTR",
-	61: "SYS_ENODATA",
-	62: "SYS_ETIME",
-	63: "SYS_ENOSR",
-	64: "SYS_ENONET",
-	65: "SYS_ENOPKG",
-	66: "SYS_EREMOTE",
-	67: "SYS_ENOLINK",
-	68: "SYS_EADV",
-	69: "SYS_ESRMNT",
-	70: "SYS_ECOMM",
-	71: "SYS_EPROTO",
-	72: "SYS_EMULTIHOP",
-	73: "SYS_EDOTDOT",
-	74: "SYS_EBADMSG",
-	75: "SYS_EOVERFLOW",
-	76: "SYS_ENOTUNIQ",
-	77: "SYS_EBADFD",
-	78: "SYS_EREMCHG",
-	79: "SYS_ELIBACC",
-	80: "SYS_ELIBBAD",
-	81: "SYS_ELIBSCN",
-	82: "SYS_ELIBMAX",
-	83: "SYS_ELIBEXEC",
-	84: "SYS_EILSEQ",
-	85: "SYS_ERESTART",
-	86: "SYS_ESTRPIPE",
-	87: "SYS_EUSERS",
-	88: "SYS_ENOTSOCK",
-	89: "SYS_EDESTADDRREQ",
-	90: "SYS_EMSGSIZE",
-	91: "SYS_EPROTOTYPE",
-	92: "SYS_ENOPROTOOPT",
-	93: "SYS_EPROTONOSUPPORT",
-	94: "SYS_ESOCKTNOSUPPORT",
-	95: "SYS_EOPNOTSUPP",
-	// Duplicate value: 95: "SYS_ENOTSUP",
-	96:  "SYS_EPFNOSUPPORT",
-	97:  "SYS_EAFNOSUPPORT",
-	98:  "SYS_EADDRINUSE",
-	99:  "SYS_EADDRNOTAVAIL",
-	100: "SYS_ENETDOWN",
-	101: "SYS_ENETUNREACH",
-	102: "SYS_ENETRESET",
-	103: "SYS_ECONNABORTED",
-	104: "SYS_ECONNRESET",
-	105: "SYS_ENOBUFS",
-	106: "SYS_EISCONN",
-	107: "SYS_ENOTCONN",
-	108: "SYS_ESHUTDOWN",
-	109: "SYS_ETOOMANYREFS",
-	110: "SYS_ETIMEDOUT",
-	111: "SYS_ECONNREFUSED",
-	112: "SYS_EHOSTDOWN",
-	113: "SYS_EHOSTUNREACH",
-	114: "SYS_EALREADY",
-	115: "SYS_EINPROGRESS",
-	116: "SYS_ESTALE",
-	117: "SYS_EUCLEAN",
-	118: "SYS_ENOTNAM",
-	119: "SYS_ENAVAIL",
-	120: "SYS_EISNAM",
-	121: "SYS_EREMOTEIO",
-	122: "SYS_EDQUOT",
-	123: "SYS_ENOMEDIUM",
-	124: "SYS_EMEDIUMTYPE",
-	125: "SYS_ECANCELED",
-	126: "SYS_ENOKEY",
-	127: "SYS_EKEYEXPIRED",
-	128: "SYS_EKEYREVOKED",
-	129: "SYS_EKEYREJECTED",
-	130: "SYS_EOWNERDEAD",
-	131: "SYS_ENOTRECOVERABLE",
-	132: "SYS_ERFKILL",
-}
-var RemoteSocketServiceError_SystemError_value = map[string]int32{
-	"SYS_SUCCESS":         0,
-	"SYS_EPERM":           1,
-	"SYS_ENOENT":          2,
-	"SYS_ESRCH":           3,
-	"SYS_EINTR":           4,
-	"SYS_EIO":             5,
-	"SYS_ENXIO":           6,
-	"SYS_E2BIG":           7,
-	"SYS_ENOEXEC":         8,
-	"SYS_EBADF":           9,
-	"SYS_ECHILD":          10,
-	"SYS_EAGAIN":          11,
-	"SYS_EWOULDBLOCK":     11,
-	"SYS_ENOMEM":          12,
-	"SYS_EACCES":          13,
-	"SYS_EFAULT":          14,
-	"SYS_ENOTBLK":         15,
-	"SYS_EBUSY":           16,
-	"SYS_EEXIST":          17,
-	"SYS_EXDEV":           18,
-	"SYS_ENODEV":          19,
-	"SYS_ENOTDIR":         20,
-	"SYS_EISDIR":          21,
-	"SYS_EINVAL":          22,
-	"SYS_ENFILE":          23,
-	"SYS_EMFILE":          24,
-	"SYS_ENOTTY":          25,
-	"SYS_ETXTBSY":         26,
-	"SYS_EFBIG":           27,
-	"SYS_ENOSPC":          28,
-	"SYS_ESPIPE":          29,
-	"SYS_EROFS":           30,
-	"SYS_EMLINK":          31,
-	"SYS_EPIPE":           32,
-	"SYS_EDOM":            33,
-	"SYS_ERANGE":          34,
-	"SYS_EDEADLK":         35,
-	"SYS_EDEADLOCK":       35,
-	"SYS_ENAMETOOLONG":    36,
-	"SYS_ENOLCK":          37,
-	"SYS_ENOSYS":          38,
-	"SYS_ENOTEMPTY":       39,
-	"SYS_ELOOP":           40,
-	"SYS_ENOMSG":          42,
-	"SYS_EIDRM":           43,
-	"SYS_ECHRNG":          44,
-	"SYS_EL2NSYNC":        45,
-	"SYS_EL3HLT":          46,
-	"SYS_EL3RST":          47,
-	"SYS_ELNRNG":          48,
-	"SYS_EUNATCH":         49,
-	"SYS_ENOCSI":          50,
-	"SYS_EL2HLT":          51,
-	"SYS_EBADE":           52,
-	"SYS_EBADR":           53,
-	"SYS_EXFULL":          54,
-	"SYS_ENOANO":          55,
-	"SYS_EBADRQC":         56,
-	"SYS_EBADSLT":         57,
-	"SYS_EBFONT":          59,
-	"SYS_ENOSTR":          60,
-	"SYS_ENODATA":         61,
-	"SYS_ETIME":           62,
-	"SYS_ENOSR":           63,
-	"SYS_ENONET":          64,
-	"SYS_ENOPKG":          65,
-	"SYS_EREMOTE":         66,
-	"SYS_ENOLINK":         67,
-	"SYS_EADV":            68,
-	"SYS_ESRMNT":          69,
-	"SYS_ECOMM":           70,
-	"SYS_EPROTO":          71,
-	"SYS_EMULTIHOP":       72,
-	"SYS_EDOTDOT":         73,
-	"SYS_EBADMSG":         74,
-	"SYS_EOVERFLOW":       75,
-	"SYS_ENOTUNIQ":        76,
-	"SYS_EBADFD":          77,
-	"SYS_EREMCHG":         78,
-	"SYS_ELIBACC":         79,
-	"SYS_ELIBBAD":         80,
-	"SYS_ELIBSCN":         81,
-	"SYS_ELIBMAX":         82,
-	"SYS_ELIBEXEC":        83,
-	"SYS_EILSEQ":          84,
-	"SYS_ERESTART":        85,
-	"SYS_ESTRPIPE":        86,
-	"SYS_EUSERS":          87,
-	"SYS_ENOTSOCK":        88,
-	"SYS_EDESTADDRREQ":    89,
-	"SYS_EMSGSIZE":        90,
-	"SYS_EPROTOTYPE":      91,
-	"SYS_ENOPROTOOPT":     92,
-	"SYS_EPROTONOSUPPORT": 93,
-	"SYS_ESOCKTNOSUPPORT": 94,
-	"SYS_EOPNOTSUPP":      95,
-	"SYS_ENOTSUP":         95,
-	"SYS_EPFNOSUPPORT":    96,
-	"SYS_EAFNOSUPPORT":    97,
-	"SYS_EADDRINUSE":      98,
-	"SYS_EADDRNOTAVAIL":   99,
-	"SYS_ENETDOWN":        100,
-	"SYS_ENETUNREACH":     101,
-	"SYS_ENETRESET":       102,
-	"SYS_ECONNABORTED":    103,
-	"SYS_ECONNRESET":      104,
-	"SYS_ENOBUFS":         105,
-	"SYS_EISCONN":         106,
-	"SYS_ENOTCONN":        107,
-	"SYS_ESHUTDOWN":       108,
-	"SYS_ETOOMANYREFS":    109,
-	"SYS_ETIMEDOUT":       110,
-	"SYS_ECONNREFUSED":    111,
-	"SYS_EHOSTDOWN":       112,
-	"SYS_EHOSTUNREACH":    113,
-	"SYS_EALREADY":        114,
-	"SYS_EINPROGRESS":     115,
-	"SYS_ESTALE":          116,
-	"SYS_EUCLEAN":         117,
-	"SYS_ENOTNAM":         118,
-	"SYS_ENAVAIL":         119,
-	"SYS_EISNAM":          120,
-	"SYS_EREMOTEIO":       121,
-	"SYS_EDQUOT":          122,
-	"SYS_ENOMEDIUM":       123,
-	"SYS_EMEDIUMTYPE":     124,
-	"SYS_ECANCELED":       125,
-	"SYS_ENOKEY":          126,
-	"SYS_EKEYEXPIRED":     127,
-	"SYS_EKEYREVOKED":     128,
-	"SYS_EKEYREJECTED":    129,
-	"SYS_EOWNERDEAD":      130,
-	"SYS_ENOTRECOVERABLE": 131,
-	"SYS_ERFKILL":         132,
-}
+// Enum value maps for RemoteSocketServiceError_SystemError.
+var (
+	RemoteSocketServiceError_SystemError_name = map[int32]string{
+		0:  "SYS_SUCCESS",
+		1:  "SYS_EPERM",
+		2:  "SYS_ENOENT",
+		3:  "SYS_ESRCH",
+		4:  "SYS_EINTR",
+		5:  "SYS_EIO",
+		6:  "SYS_ENXIO",
+		7:  "SYS_E2BIG",
+		8:  "SYS_ENOEXEC",
+		9:  "SYS_EBADF",
+		10: "SYS_ECHILD",
+		11: "SYS_EAGAIN",
+		// Duplicate value: 11: "SYS_EWOULDBLOCK",
+		12: "SYS_ENOMEM",
+		13: "SYS_EACCES",
+		14: "SYS_EFAULT",
+		15: "SYS_ENOTBLK",
+		16: "SYS_EBUSY",
+		17: "SYS_EEXIST",
+		18: "SYS_EXDEV",
+		19: "SYS_ENODEV",
+		20: "SYS_ENOTDIR",
+		21: "SYS_EISDIR",
+		22: "SYS_EINVAL",
+		23: "SYS_ENFILE",
+		24: "SYS_EMFILE",
+		25: "SYS_ENOTTY",
+		26: "SYS_ETXTBSY",
+		27: "SYS_EFBIG",
+		28: "SYS_ENOSPC",
+		29: "SYS_ESPIPE",
+		30: "SYS_EROFS",
+		31: "SYS_EMLINK",
+		32: "SYS_EPIPE",
+		33: "SYS_EDOM",
+		34: "SYS_ERANGE",
+		35: "SYS_EDEADLK",
+		// Duplicate value: 35: "SYS_EDEADLOCK",
+		36: "SYS_ENAMETOOLONG",
+		37: "SYS_ENOLCK",
+		38: "SYS_ENOSYS",
+		39: "SYS_ENOTEMPTY",
+		40: "SYS_ELOOP",
+		42: "SYS_ENOMSG",
+		43: "SYS_EIDRM",
+		44: "SYS_ECHRNG",
+		45: "SYS_EL2NSYNC",
+		46: "SYS_EL3HLT",
+		47: "SYS_EL3RST",
+		48: "SYS_ELNRNG",
+		49: "SYS_EUNATCH",
+		50: "SYS_ENOCSI",
+		51: "SYS_EL2HLT",
+		52: "SYS_EBADE",
+		53: "SYS_EBADR",
+		54: "SYS_EXFULL",
+		55: "SYS_ENOANO",
+		56: "SYS_EBADRQC",
+		57: "SYS_EBADSLT",
+		59: "SYS_EBFONT",
+		60: "SYS_ENOSTR",
+		61: "SYS_ENODATA",
+		62: "SYS_ETIME",
+		63: "SYS_ENOSR",
+		64: "SYS_ENONET",
+		65: "SYS_ENOPKG",
+		66: "SYS_EREMOTE",
+		67: "SYS_ENOLINK",
+		68: "SYS_EADV",
+		69: "SYS_ESRMNT",
+		70: "SYS_ECOMM",
+		71: "SYS_EPROTO",
+		72: "SYS_EMULTIHOP",
+		73: "SYS_EDOTDOT",
+		74: "SYS_EBADMSG",
+		75: "SYS_EOVERFLOW",
+		76: "SYS_ENOTUNIQ",
+		77: "SYS_EBADFD",
+		78: "SYS_EREMCHG",
+		79: "SYS_ELIBACC",
+		80: "SYS_ELIBBAD",
+		81: "SYS_ELIBSCN",
+		82: "SYS_ELIBMAX",
+		83: "SYS_ELIBEXEC",
+		84: "SYS_EILSEQ",
+		85: "SYS_ERESTART",
+		86: "SYS_ESTRPIPE",
+		87: "SYS_EUSERS",
+		88: "SYS_ENOTSOCK",
+		89: "SYS_EDESTADDRREQ",
+		90: "SYS_EMSGSIZE",
+		91: "SYS_EPROTOTYPE",
+		92: "SYS_ENOPROTOOPT",
+		93: "SYS_EPROTONOSUPPORT",
+		94: "SYS_ESOCKTNOSUPPORT",
+		95: "SYS_EOPNOTSUPP",
+		// Duplicate value: 95: "SYS_ENOTSUP",
+		96:  "SYS_EPFNOSUPPORT",
+		97:  "SYS_EAFNOSUPPORT",
+		98:  "SYS_EADDRINUSE",
+		99:  "SYS_EADDRNOTAVAIL",
+		100: "SYS_ENETDOWN",
+		101: "SYS_ENETUNREACH",
+		102: "SYS_ENETRESET",
+		103: "SYS_ECONNABORTED",
+		104: "SYS_ECONNRESET",
+		105: "SYS_ENOBUFS",
+		106: "SYS_EISCONN",
+		107: "SYS_ENOTCONN",
+		108: "SYS_ESHUTDOWN",
+		109: "SYS_ETOOMANYREFS",
+		110: "SYS_ETIMEDOUT",
+		111: "SYS_ECONNREFUSED",
+		112: "SYS_EHOSTDOWN",
+		113: "SYS_EHOSTUNREACH",
+		114: "SYS_EALREADY",
+		115: "SYS_EINPROGRESS",
+		116: "SYS_ESTALE",
+		117: "SYS_EUCLEAN",
+		118: "SYS_ENOTNAM",
+		119: "SYS_ENAVAIL",
+		120: "SYS_EISNAM",
+		121: "SYS_EREMOTEIO",
+		122: "SYS_EDQUOT",
+		123: "SYS_ENOMEDIUM",
+		124: "SYS_EMEDIUMTYPE",
+		125: "SYS_ECANCELED",
+		126: "SYS_ENOKEY",
+		127: "SYS_EKEYEXPIRED",
+		128: "SYS_EKEYREVOKED",
+		129: "SYS_EKEYREJECTED",
+		131: "SYS_ENOTRECOVERABLE",
+		132: "SYS_ERFKILL",
+	}
+	RemoteSocketServiceError_SystemError_value = map[string]int32{
+		"SYS_SUCCESS":         0,
+		"SYS_EPERM":           1,
+		"SYS_ENOENT":          2,
+		"SYS_ESRCH":           3,
+		"SYS_EINTR":           4,
+		"SYS_EIO":             5,
+		"SYS_ENXIO":           6,
+		"SYS_E2BIG":           7,
+		"SYS_ENOEXEC":         8,
+		"SYS_EBADF":           9,
+		"SYS_ECHILD":          10,
+		"SYS_EAGAIN":          11,
+		"SYS_EWOULDBLOCK":     11,
+		"SYS_ENOMEM":          12,
+		"SYS_EACCES":          13,
+		"SYS_EFAULT":          14,
+		"SYS_ENOTBLK":         15,
+		"SYS_EBUSY":           16,
+		"SYS_EEXIST":          17,
+		"SYS_EXDEV":           18,
+		"SYS_ENODEV":          19,
+		"SYS_ENOTDIR":         20,
+		"SYS_EISDIR":          21,
+		"SYS_EINVAL":          22,
+		"SYS_ENFILE":          23,
+		"SYS_EMFILE":          24,
+		"SYS_ENOTTY":          25,
+		"SYS_ETXTBSY":         26,
+		"SYS_EFBIG":           27,
+		"SYS_ENOSPC":          28,
+		"SYS_ESPIPE":          29,
+		"SYS_EROFS":           30,
+		"SYS_EMLINK":          31,
+		"SYS_EPIPE":           32,
+		"SYS_EDOM":            33,
+		"SYS_ERANGE":          34,
+		"SYS_EDEADLK":         35,
+		"SYS_EDEADLOCK":       35,
+		"SYS_ENAMETOOLONG":    36,
+		"SYS_ENOLCK":          37,
+		"SYS_ENOSYS":          38,
+		"SYS_ENOTEMPTY":       39,
+		"SYS_ELOOP":           40,
+		"SYS_ENOMSG":          42,
+		"SYS_EIDRM":           43,
+		"SYS_ECHRNG":          44,
+		"SYS_EL2NSYNC":        45,
+		"SYS_EL3HLT":          46,
+		"SYS_EL3RST":          47,
+		"SYS_ELNRNG":          48,
+		"SYS_EUNATCH":         49,
+		"SYS_ENOCSI":          50,
+		"SYS_EL2HLT":          51,
+		"SYS_EBADE":           52,
+		"SYS_EBADR":           53,
+		"SYS_EXFULL":          54,
+		"SYS_ENOANO":          55,
+		"SYS_EBADRQC":         56,
+		"SYS_EBADSLT":         57,
+		"SYS_EBFONT":          59,
+		"SYS_ENOSTR":          60,
+		"SYS_ENODATA":         61,
+		"SYS_ETIME":           62,
+		"SYS_ENOSR":           63,
+		"SYS_ENONET":          64,
+		"SYS_ENOPKG":          65,
+		"SYS_EREMOTE":         66,
+		"SYS_ENOLINK":         67,
+		"SYS_EADV":            68,
+		"SYS_ESRMNT":          69,
+		"SYS_ECOMM":           70,
+		"SYS_EPROTO":          71,
+		"SYS_EMULTIHOP":       72,
+		"SYS_EDOTDOT":         73,
+		"SYS_EBADMSG":         74,
+		"SYS_EOVERFLOW":       75,
+		"SYS_ENOTUNIQ":        76,
+		"SYS_EBADFD":          77,
+		"SYS_EREMCHG":         78,
+		"SYS_ELIBACC":         79,
+		"SYS_ELIBBAD":         80,
+		"SYS_ELIBSCN":         81,
+		"SYS_ELIBMAX":         82,
+		"SYS_ELIBEXEC":        83,
+		"SYS_EILSEQ":          84,
+		"SYS_ERESTART":        85,
+		"SYS_ESTRPIPE":        86,
+		"SYS_EUSERS":          87,
+		"SYS_ENOTSOCK":        88,
+		"SYS_EDESTADDRREQ":    89,
+		"SYS_EMSGSIZE":        90,
+		"SYS_EPROTOTYPE":      91,
+		"SYS_ENOPROTOOPT":     92,
+		"SYS_EPROTONOSUPPORT": 93,
+		"SYS_ESOCKTNOSUPPORT": 94,
+		"SYS_EOPNOTSUPP":      95,
+		"SYS_ENOTSUP":         95,
+		"SYS_EPFNOSUPPORT":    96,
+		"SYS_EAFNOSUPPORT":    97,
+		"SYS_EADDRINUSE":      98,
+		"SYS_EADDRNOTAVAIL":   99,
+		"SYS_ENETDOWN":        100,
+		"SYS_ENETUNREACH":     101,
+		"SYS_ENETRESET":       102,
+		"SYS_ECONNABORTED":    103,
+		"SYS_ECONNRESET":      104,
+		"SYS_ENOBUFS":         105,
+		"SYS_EISCONN":         106,
+		"SYS_ENOTCONN":        107,
+		"SYS_ESHUTDOWN":       108,
+		"SYS_ETOOMANYREFS":    109,
+		"SYS_ETIMEDOUT":       110,
+		"SYS_ECONNREFUSED":    111,
+		"SYS_EHOSTDOWN":       112,
+		"SYS_EHOSTUNREACH":    113,
+		"SYS_EALREADY":        114,
+		"SYS_EINPROGRESS":     115,
+		"SYS_ESTALE":          116,
+		"SYS_EUCLEAN":         117,
+		"SYS_ENOTNAM":         118,
+		"SYS_ENAVAIL":         119,
+		"SYS_EISNAM":          120,
+		"SYS_EREMOTEIO":       121,
+		"SYS_EDQUOT":          122,
+		"SYS_ENOMEDIUM":       123,
+		"SYS_EMEDIUMTYPE":     124,
+		"SYS_ECANCELED":       125,
+		"SYS_ENOKEY":          126,
+		"SYS_EKEYEXPIRED":     127,
+		"SYS_EKEYREVOKED":     128,
+		"SYS_EKEYREJECTED":    129,
+		"SYS_ENOTRECOVERABLE": 131,
+		"SYS_ERFKILL":         132,
+	}
+)
 
 func (x RemoteSocketServiceError_SystemError) Enum() *RemoteSocketServiceError_SystemError {
 	p := new(RemoteSocketServiceError_SystemError)
 	*p = x
 	return p
 }
+
 func (x RemoteSocketServiceError_SystemError) String() string {
-	return proto.EnumName(RemoteSocketServiceError_SystemError_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *RemoteSocketServiceError_SystemError) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(RemoteSocketServiceError_SystemError_value, data, "RemoteSocketServiceError_SystemError")
-	if err != nil {
-		return err
-	}
-	*x = RemoteSocketServiceError_SystemError(value)
-	return nil
+
+func (RemoteSocketServiceError_SystemError) Descriptor() protoreflect.EnumDescriptor {
+	return file_socket_service_proto_enumTypes[1].Descriptor()
 }
+
+func (RemoteSocketServiceError_SystemError) Type() protoreflect.EnumType {
+	return &file_socket_service_proto_enumTypes[1]
+}
+
+func (x RemoteSocketServiceError_SystemError) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use RemoteSocketServiceError_SystemError.Descriptor instead.
 func (RemoteSocketServiceError_SystemError) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{0, 1}
+	return file_socket_service_proto_rawDescGZIP(), []int{0, 1}
 }
 
 type CreateSocketRequest_SocketFamily int32
 
 const (
+	CreateSocketRequest_NONE CreateSocketRequest_SocketFamily = 0
 	CreateSocketRequest_IPv4 CreateSocketRequest_SocketFamily = 1
 	CreateSocketRequest_IPv6 CreateSocketRequest_SocketFamily = 2
 )
 
-var CreateSocketRequest_SocketFamily_name = map[int32]string{
-	1: "IPv4",
-	2: "IPv6",
-}
-var CreateSocketRequest_SocketFamily_value = map[string]int32{
-	"IPv4": 1,
-	"IPv6": 2,
-}
+// Enum value maps for CreateSocketRequest_SocketFamily.
+var (
+	CreateSocketRequest_SocketFamily_name = map[int32]string{
+		0: "NONE",
+		1: "IPv4",
+		2: "IPv6",
+	}
+	CreateSocketRequest_SocketFamily_value = map[string]int32{
+		"NONE": 0,
+		"IPv4": 1,
+		"IPv6": 2,
+	}
+)
 
 func (x CreateSocketRequest_SocketFamily) Enum() *CreateSocketRequest_SocketFamily {
 	p := new(CreateSocketRequest_SocketFamily)
 	*p = x
 	return p
 }
+
 func (x CreateSocketRequest_SocketFamily) String() string {
-	return proto.EnumName(CreateSocketRequest_SocketFamily_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *CreateSocketRequest_SocketFamily) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(CreateSocketRequest_SocketFamily_value, data, "CreateSocketRequest_SocketFamily")
-	if err != nil {
-		return err
-	}
-	*x = CreateSocketRequest_SocketFamily(value)
-	return nil
+
+func (CreateSocketRequest_SocketFamily) Descriptor() protoreflect.EnumDescriptor {
+	return file_socket_service_proto_enumTypes[2].Descriptor()
+}
+
+func (CreateSocketRequest_SocketFamily) Type() protoreflect.EnumType {
+	return &file_socket_service_proto_enumTypes[2]
 }
+
+func (x CreateSocketRequest_SocketFamily) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use CreateSocketRequest_SocketFamily.Descriptor instead.
 func (CreateSocketRequest_SocketFamily) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{2, 0}
+	return file_socket_service_proto_rawDescGZIP(), []int{2, 0}
 }
 
 type CreateSocketRequest_SocketProtocol int32
 
 const (
-	CreateSocketRequest_TCP CreateSocketRequest_SocketProtocol = 1
-	CreateSocketRequest_UDP CreateSocketRequest_SocketProtocol = 2
+	CreateSocketRequest_SP_NONE CreateSocketRequest_SocketProtocol = 0
+	CreateSocketRequest_TCP     CreateSocketRequest_SocketProtocol = 1
+	CreateSocketRequest_UDP     CreateSocketRequest_SocketProtocol = 2
 )
 
-var CreateSocketRequest_SocketProtocol_name = map[int32]string{
-	1: "TCP",
-	2: "UDP",
-}
-var CreateSocketRequest_SocketProtocol_value = map[string]int32{
-	"TCP": 1,
-	"UDP": 2,
-}
+// Enum value maps for CreateSocketRequest_SocketProtocol.
+var (
+	CreateSocketRequest_SocketProtocol_name = map[int32]string{
+		0: "SP_NONE",
+		1: "TCP",
+		2: "UDP",
+	}
+	CreateSocketRequest_SocketProtocol_value = map[string]int32{
+		"SP_NONE": 0,
+		"TCP":     1,
+		"UDP":     2,
+	}
+)
 
 func (x CreateSocketRequest_SocketProtocol) Enum() *CreateSocketRequest_SocketProtocol {
 	p := new(CreateSocketRequest_SocketProtocol)
 	*p = x
 	return p
 }
+
 func (x CreateSocketRequest_SocketProtocol) String() string {
-	return proto.EnumName(CreateSocketRequest_SocketProtocol_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *CreateSocketRequest_SocketProtocol) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(CreateSocketRequest_SocketProtocol_value, data, "CreateSocketRequest_SocketProtocol")
-	if err != nil {
-		return err
-	}
-	*x = CreateSocketRequest_SocketProtocol(value)
-	return nil
+
+func (CreateSocketRequest_SocketProtocol) Descriptor() protoreflect.EnumDescriptor {
+	return file_socket_service_proto_enumTypes[3].Descriptor()
+}
+
+func (CreateSocketRequest_SocketProtocol) Type() protoreflect.EnumType {
+	return &file_socket_service_proto_enumTypes[3]
+}
+
+func (x CreateSocketRequest_SocketProtocol) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use CreateSocketRequest_SocketProtocol.Descriptor instead.
 func (CreateSocketRequest_SocketProtocol) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{2, 1}
+	return file_socket_service_proto_rawDescGZIP(), []int{2, 1}
 }
 
 type SocketOption_SocketOptionLevel int32
@@ -579,42 +627,53 @@ const (
 	SocketOption_SOCKET_SOL_UDP    SocketOption_SocketOptionLevel = 17
 )
 
-var SocketOption_SocketOptionLevel_name = map[int32]string{
-	0:  "SOCKET_SOL_IP",
-	1:  "SOCKET_SOL_SOCKET",
-	6:  "SOCKET_SOL_TCP",
-	17: "SOCKET_SOL_UDP",
-}
-var SocketOption_SocketOptionLevel_value = map[string]int32{
-	"SOCKET_SOL_IP":     0,
-	"SOCKET_SOL_SOCKET": 1,
-	"SOCKET_SOL_TCP":    6,
-	"SOCKET_SOL_UDP":    17,
-}
+// Enum value maps for SocketOption_SocketOptionLevel.
+var (
+	SocketOption_SocketOptionLevel_name = map[int32]string{
+		0:  "SOCKET_SOL_IP",
+		1:  "SOCKET_SOL_SOCKET",
+		6:  "SOCKET_SOL_TCP",
+		17: "SOCKET_SOL_UDP",
+	}
+	SocketOption_SocketOptionLevel_value = map[string]int32{
+		"SOCKET_SOL_IP":     0,
+		"SOCKET_SOL_SOCKET": 1,
+		"SOCKET_SOL_TCP":    6,
+		"SOCKET_SOL_UDP":    17,
+	}
+)
 
 func (x SocketOption_SocketOptionLevel) Enum() *SocketOption_SocketOptionLevel {
 	p := new(SocketOption_SocketOptionLevel)
 	*p = x
 	return p
 }
+
 func (x SocketOption_SocketOptionLevel) String() string {
-	return proto.EnumName(SocketOption_SocketOptionLevel_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *SocketOption_SocketOptionLevel) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SocketOption_SocketOptionLevel_value, data, "SocketOption_SocketOptionLevel")
-	if err != nil {
-		return err
-	}
-	*x = SocketOption_SocketOptionLevel(value)
-	return nil
+
+func (SocketOption_SocketOptionLevel) Descriptor() protoreflect.EnumDescriptor {
+	return file_socket_service_proto_enumTypes[4].Descriptor()
+}
+
+func (SocketOption_SocketOptionLevel) Type() protoreflect.EnumType {
+	return &file_socket_service_proto_enumTypes[4]
 }
+
+func (x SocketOption_SocketOptionLevel) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SocketOption_SocketOptionLevel.Descriptor instead.
 func (SocketOption_SocketOptionLevel) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{10, 0}
+	return file_socket_service_proto_rawDescGZIP(), []int{10, 0}
 }
 
 type SocketOption_SocketOptionName int32
 
 const (
+	SocketOption_SOP_NONE                SocketOption_SocketOptionName = 0
 	SocketOption_SOCKET_SO_DEBUG         SocketOption_SocketOptionName = 1
 	SocketOption_SOCKET_SO_REUSEADDR     SocketOption_SocketOptionName = 2
 	SocketOption_SOCKET_SO_TYPE          SocketOption_SocketOptionName = 3
@@ -646,162 +705,200 @@ const (
 	SocketOption_SOCKET_TCP_QUICKACK     SocketOption_SocketOptionName = 12
 )
 
-var SocketOption_SocketOptionName_name = map[int32]string{
-	1:  "SOCKET_SO_DEBUG",
-	2:  "SOCKET_SO_REUSEADDR",
-	3:  "SOCKET_SO_TYPE",
-	4:  "SOCKET_SO_ERROR",
-	5:  "SOCKET_SO_DONTROUTE",
-	6:  "SOCKET_SO_BROADCAST",
-	7:  "SOCKET_SO_SNDBUF",
-	8:  "SOCKET_SO_RCVBUF",
-	9:  "SOCKET_SO_KEEPALIVE",
-	10: "SOCKET_SO_OOBINLINE",
-	13: "SOCKET_SO_LINGER",
-	20: "SOCKET_SO_RCVTIMEO",
-	21: "SOCKET_SO_SNDTIMEO",
-	// Duplicate value: 1: "SOCKET_IP_TOS",
-	// Duplicate value: 2: "SOCKET_IP_TTL",
-	// Duplicate value: 3: "SOCKET_IP_HDRINCL",
-	// Duplicate value: 4: "SOCKET_IP_OPTIONS",
-	// Duplicate value: 1: "SOCKET_TCP_NODELAY",
-	// Duplicate value: 2: "SOCKET_TCP_MAXSEG",
-	// Duplicate value: 3: "SOCKET_TCP_CORK",
-	// Duplicate value: 4: "SOCKET_TCP_KEEPIDLE",
-	// Duplicate value: 5: "SOCKET_TCP_KEEPINTVL",
-	// Duplicate value: 6: "SOCKET_TCP_KEEPCNT",
-	// Duplicate value: 7: "SOCKET_TCP_SYNCNT",
-	// Duplicate value: 8: "SOCKET_TCP_LINGER2",
-	// Duplicate value: 9: "SOCKET_TCP_DEFER_ACCEPT",
-	// Duplicate value: 10: "SOCKET_TCP_WINDOW_CLAMP",
-	11: "SOCKET_TCP_INFO",
-	12: "SOCKET_TCP_QUICKACK",
-}
-var SocketOption_SocketOptionName_value = map[string]int32{
-	"SOCKET_SO_DEBUG":         1,
-	"SOCKET_SO_REUSEADDR":     2,
-	"SOCKET_SO_TYPE":          3,
-	"SOCKET_SO_ERROR":         4,
-	"SOCKET_SO_DONTROUTE":     5,
-	"SOCKET_SO_BROADCAST":     6,
-	"SOCKET_SO_SNDBUF":        7,
-	"SOCKET_SO_RCVBUF":        8,
-	"SOCKET_SO_KEEPALIVE":     9,
-	"SOCKET_SO_OOBINLINE":     10,
-	"SOCKET_SO_LINGER":        13,
-	"SOCKET_SO_RCVTIMEO":      20,
-	"SOCKET_SO_SNDTIMEO":      21,
-	"SOCKET_IP_TOS":           1,
-	"SOCKET_IP_TTL":           2,
-	"SOCKET_IP_HDRINCL":       3,
-	"SOCKET_IP_OPTIONS":       4,
-	"SOCKET_TCP_NODELAY":      1,
-	"SOCKET_TCP_MAXSEG":       2,
-	"SOCKET_TCP_CORK":         3,
-	"SOCKET_TCP_KEEPIDLE":     4,
-	"SOCKET_TCP_KEEPINTVL":    5,
-	"SOCKET_TCP_KEEPCNT":      6,
-	"SOCKET_TCP_SYNCNT":       7,
-	"SOCKET_TCP_LINGER2":      8,
-	"SOCKET_TCP_DEFER_ACCEPT": 9,
-	"SOCKET_TCP_WINDOW_CLAMP": 10,
-	"SOCKET_TCP_INFO":         11,
-	"SOCKET_TCP_QUICKACK":     12,
-}
+// Enum value maps for SocketOption_SocketOptionName.
+var (
+	SocketOption_SocketOptionName_name = map[int32]string{
+		0:  "SOP_NONE",
+		1:  "SOCKET_SO_DEBUG",
+		2:  "SOCKET_SO_REUSEADDR",
+		3:  "SOCKET_SO_TYPE",
+		4:  "SOCKET_SO_ERROR",
+		5:  "SOCKET_SO_DONTROUTE",
+		6:  "SOCKET_SO_BROADCAST",
+		7:  "SOCKET_SO_SNDBUF",
+		8:  "SOCKET_SO_RCVBUF",
+		9:  "SOCKET_SO_KEEPALIVE",
+		10: "SOCKET_SO_OOBINLINE",
+		13: "SOCKET_SO_LINGER",
+		20: "SOCKET_SO_RCVTIMEO",
+		21: "SOCKET_SO_SNDTIMEO",
+		// Duplicate value: 1: "SOCKET_IP_TOS",
+		// Duplicate value: 2: "SOCKET_IP_TTL",
+		// Duplicate value: 3: "SOCKET_IP_HDRINCL",
+		// Duplicate value: 4: "SOCKET_IP_OPTIONS",
+		// Duplicate value: 1: "SOCKET_TCP_NODELAY",
+		// Duplicate value: 2: "SOCKET_TCP_MAXSEG",
+		// Duplicate value: 3: "SOCKET_TCP_CORK",
+		// Duplicate value: 4: "SOCKET_TCP_KEEPIDLE",
+		// Duplicate value: 5: "SOCKET_TCP_KEEPINTVL",
+		// Duplicate value: 6: "SOCKET_TCP_KEEPCNT",
+		// Duplicate value: 7: "SOCKET_TCP_SYNCNT",
+		// Duplicate value: 8: "SOCKET_TCP_LINGER2",
+		// Duplicate value: 9: "SOCKET_TCP_DEFER_ACCEPT",
+		// Duplicate value: 10: "SOCKET_TCP_WINDOW_CLAMP",
+		11: "SOCKET_TCP_INFO",
+		12: "SOCKET_TCP_QUICKACK",
+	}
+	SocketOption_SocketOptionName_value = map[string]int32{
+		"SOP_NONE":                0,
+		"SOCKET_SO_DEBUG":         1,
+		"SOCKET_SO_REUSEADDR":     2,
+		"SOCKET_SO_TYPE":          3,
+		"SOCKET_SO_ERROR":         4,
+		"SOCKET_SO_DONTROUTE":     5,
+		"SOCKET_SO_BROADCAST":     6,
+		"SOCKET_SO_SNDBUF":        7,
+		"SOCKET_SO_RCVBUF":        8,
+		"SOCKET_SO_KEEPALIVE":     9,
+		"SOCKET_SO_OOBINLINE":     10,
+		"SOCKET_SO_LINGER":        13,
+		"SOCKET_SO_RCVTIMEO":      20,
+		"SOCKET_SO_SNDTIMEO":      21,
+		"SOCKET_IP_TOS":           1,
+		"SOCKET_IP_TTL":           2,
+		"SOCKET_IP_HDRINCL":       3,
+		"SOCKET_IP_OPTIONS":       4,
+		"SOCKET_TCP_NODELAY":      1,
+		"SOCKET_TCP_MAXSEG":       2,
+		"SOCKET_TCP_CORK":         3,
+		"SOCKET_TCP_KEEPIDLE":     4,
+		"SOCKET_TCP_KEEPINTVL":    5,
+		"SOCKET_TCP_KEEPCNT":      6,
+		"SOCKET_TCP_SYNCNT":       7,
+		"SOCKET_TCP_LINGER2":      8,
+		"SOCKET_TCP_DEFER_ACCEPT": 9,
+		"SOCKET_TCP_WINDOW_CLAMP": 10,
+		"SOCKET_TCP_INFO":         11,
+		"SOCKET_TCP_QUICKACK":     12,
+	}
+)
 
 func (x SocketOption_SocketOptionName) Enum() *SocketOption_SocketOptionName {
 	p := new(SocketOption_SocketOptionName)
 	*p = x
 	return p
 }
+
 func (x SocketOption_SocketOptionName) String() string {
-	return proto.EnumName(SocketOption_SocketOptionName_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *SocketOption_SocketOptionName) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SocketOption_SocketOptionName_value, data, "SocketOption_SocketOptionName")
-	if err != nil {
-		return err
-	}
-	*x = SocketOption_SocketOptionName(value)
-	return nil
+
+func (SocketOption_SocketOptionName) Descriptor() protoreflect.EnumDescriptor {
+	return file_socket_service_proto_enumTypes[5].Descriptor()
+}
+
+func (SocketOption_SocketOptionName) Type() protoreflect.EnumType {
+	return &file_socket_service_proto_enumTypes[5]
 }
+
+func (x SocketOption_SocketOptionName) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SocketOption_SocketOptionName.Descriptor instead.
 func (SocketOption_SocketOptionName) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{10, 1}
+	return file_socket_service_proto_rawDescGZIP(), []int{10, 1}
 }
 
 type ShutDownRequest_How int32
 
 const (
+	ShutDownRequest_NONE             ShutDownRequest_How = 0
 	ShutDownRequest_SOCKET_SHUT_RD   ShutDownRequest_How = 1
 	ShutDownRequest_SOCKET_SHUT_WR   ShutDownRequest_How = 2
 	ShutDownRequest_SOCKET_SHUT_RDWR ShutDownRequest_How = 3
 )
 
-var ShutDownRequest_How_name = map[int32]string{
-	1: "SOCKET_SHUT_RD",
-	2: "SOCKET_SHUT_WR",
-	3: "SOCKET_SHUT_RDWR",
-}
-var ShutDownRequest_How_value = map[string]int32{
-	"SOCKET_SHUT_RD":   1,
-	"SOCKET_SHUT_WR":   2,
-	"SOCKET_SHUT_RDWR": 3,
-}
+// Enum value maps for ShutDownRequest_How.
+var (
+	ShutDownRequest_How_name = map[int32]string{
+		0: "NONE",
+		1: "SOCKET_SHUT_RD",
+		2: "SOCKET_SHUT_WR",
+		3: "SOCKET_SHUT_RDWR",
+	}
+	ShutDownRequest_How_value = map[string]int32{
+		"NONE":             0,
+		"SOCKET_SHUT_RD":   1,
+		"SOCKET_SHUT_WR":   2,
+		"SOCKET_SHUT_RDWR": 3,
+	}
+)
 
 func (x ShutDownRequest_How) Enum() *ShutDownRequest_How {
 	p := new(ShutDownRequest_How)
 	*p = x
 	return p
 }
+
 func (x ShutDownRequest_How) String() string {
-	return proto.EnumName(ShutDownRequest_How_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *ShutDownRequest_How) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(ShutDownRequest_How_value, data, "ShutDownRequest_How")
-	if err != nil {
-		return err
-	}
-	*x = ShutDownRequest_How(value)
-	return nil
+
+func (ShutDownRequest_How) Descriptor() protoreflect.EnumDescriptor {
+	return file_socket_service_proto_enumTypes[6].Descriptor()
+}
+
+func (ShutDownRequest_How) Type() protoreflect.EnumType {
+	return &file_socket_service_proto_enumTypes[6]
+}
+
+func (x ShutDownRequest_How) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use ShutDownRequest_How.Descriptor instead.
 func (ShutDownRequest_How) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{21, 0}
+	return file_socket_service_proto_rawDescGZIP(), []int{21, 0}
 }
 
 type ReceiveRequest_Flags int32
 
 const (
+	ReceiveRequest_NONE     ReceiveRequest_Flags = 0
 	ReceiveRequest_MSG_OOB  ReceiveRequest_Flags = 1
 	ReceiveRequest_MSG_PEEK ReceiveRequest_Flags = 2
 )
 
-var ReceiveRequest_Flags_name = map[int32]string{
-	1: "MSG_OOB",
-	2: "MSG_PEEK",
-}
-var ReceiveRequest_Flags_value = map[string]int32{
-	"MSG_OOB":  1,
-	"MSG_PEEK": 2,
-}
+// Enum value maps for ReceiveRequest_Flags.
+var (
+	ReceiveRequest_Flags_name = map[int32]string{
+		0: "NONE",
+		1: "MSG_OOB",
+		2: "MSG_PEEK",
+	}
+	ReceiveRequest_Flags_value = map[string]int32{
+		"NONE":     0,
+		"MSG_OOB":  1,
+		"MSG_PEEK": 2,
+	}
+)
 
 func (x ReceiveRequest_Flags) Enum() *ReceiveRequest_Flags {
 	p := new(ReceiveRequest_Flags)
 	*p = x
 	return p
 }
+
 func (x ReceiveRequest_Flags) String() string {
-	return proto.EnumName(ReceiveRequest_Flags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *ReceiveRequest_Flags) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(ReceiveRequest_Flags_value, data, "ReceiveRequest_Flags")
-	if err != nil {
-		return err
-	}
-	*x = ReceiveRequest_Flags(value)
-	return nil
+
+func (ReceiveRequest_Flags) Descriptor() protoreflect.EnumDescriptor {
+	return file_socket_service_proto_enumTypes[7].Descriptor()
+}
+
+func (ReceiveRequest_Flags) Type() protoreflect.EnumType {
+	return &file_socket_service_proto_enumTypes[7]
 }
+
+func (x ReceiveRequest_Flags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ReceiveRequest_Flags.Descriptor instead.
 func (ReceiveRequest_Flags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{27, 0}
+	return file_socket_service_proto_rawDescGZIP(), []int{27, 0}
 }
 
 type PollEvent_PollEventFlag int32
@@ -823,62 +920,73 @@ const (
 	PollEvent_SOCKET_POLLRDHUP  PollEvent_PollEventFlag = 8192
 )
 
-var PollEvent_PollEventFlag_name = map[int32]string{
-	0:    "SOCKET_POLLNONE",
-	1:    "SOCKET_POLLIN",
-	2:    "SOCKET_POLLPRI",
-	4:    "SOCKET_POLLOUT",
-	8:    "SOCKET_POLLERR",
-	16:   "SOCKET_POLLHUP",
-	32:   "SOCKET_POLLNVAL",
-	64:   "SOCKET_POLLRDNORM",
-	128:  "SOCKET_POLLRDBAND",
-	256:  "SOCKET_POLLWRNORM",
-	512:  "SOCKET_POLLWRBAND",
-	1024: "SOCKET_POLLMSG",
-	4096: "SOCKET_POLLREMOVE",
-	8192: "SOCKET_POLLRDHUP",
-}
-var PollEvent_PollEventFlag_value = map[string]int32{
-	"SOCKET_POLLNONE":   0,
-	"SOCKET_POLLIN":     1,
-	"SOCKET_POLLPRI":    2,
-	"SOCKET_POLLOUT":    4,
-	"SOCKET_POLLERR":    8,
-	"SOCKET_POLLHUP":    16,
-	"SOCKET_POLLNVAL":   32,
-	"SOCKET_POLLRDNORM": 64,
-	"SOCKET_POLLRDBAND": 128,
-	"SOCKET_POLLWRNORM": 256,
-	"SOCKET_POLLWRBAND": 512,
-	"SOCKET_POLLMSG":    1024,
-	"SOCKET_POLLREMOVE": 4096,
-	"SOCKET_POLLRDHUP":  8192,
-}
+// Enum value maps for PollEvent_PollEventFlag.
+var (
+	PollEvent_PollEventFlag_name = map[int32]string{
+		0:    "SOCKET_POLLNONE",
+		1:    "SOCKET_POLLIN",
+		2:    "SOCKET_POLLPRI",
+		4:    "SOCKET_POLLOUT",
+		8:    "SOCKET_POLLERR",
+		16:   "SOCKET_POLLHUP",
+		32:   "SOCKET_POLLNVAL",
+		64:   "SOCKET_POLLRDNORM",
+		128:  "SOCKET_POLLRDBAND",
+		256:  "SOCKET_POLLWRNORM",
+		512:  "SOCKET_POLLWRBAND",
+		1024: "SOCKET_POLLMSG",
+		4096: "SOCKET_POLLREMOVE",
+		8192: "SOCKET_POLLRDHUP",
+	}
+	PollEvent_PollEventFlag_value = map[string]int32{
+		"SOCKET_POLLNONE":   0,
+		"SOCKET_POLLIN":     1,
+		"SOCKET_POLLPRI":    2,
+		"SOCKET_POLLOUT":    4,
+		"SOCKET_POLLERR":    8,
+		"SOCKET_POLLHUP":    16,
+		"SOCKET_POLLNVAL":   32,
+		"SOCKET_POLLRDNORM": 64,
+		"SOCKET_POLLRDBAND": 128,
+		"SOCKET_POLLWRNORM": 256,
+		"SOCKET_POLLWRBAND": 512,
+		"SOCKET_POLLMSG":    1024,
+		"SOCKET_POLLREMOVE": 4096,
+		"SOCKET_POLLRDHUP":  8192,
+	}
+)
 
 func (x PollEvent_PollEventFlag) Enum() *PollEvent_PollEventFlag {
 	p := new(PollEvent_PollEventFlag)
 	*p = x
 	return p
 }
+
 func (x PollEvent_PollEventFlag) String() string {
-	return proto.EnumName(PollEvent_PollEventFlag_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *PollEvent_PollEventFlag) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(PollEvent_PollEventFlag_value, data, "PollEvent_PollEventFlag")
-	if err != nil {
-		return err
-	}
-	*x = PollEvent_PollEventFlag(value)
-	return nil
+
+func (PollEvent_PollEventFlag) Descriptor() protoreflect.EnumDescriptor {
+	return file_socket_service_proto_enumTypes[8].Descriptor()
+}
+
+func (PollEvent_PollEventFlag) Type() protoreflect.EnumType {
+	return &file_socket_service_proto_enumTypes[8]
 }
+
+func (x PollEvent_PollEventFlag) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PollEvent_PollEventFlag.Descriptor instead.
 func (PollEvent_PollEventFlag) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{29, 0}
+	return file_socket_service_proto_rawDescGZIP(), []int{29, 0}
 }
 
 type ResolveReply_ErrorCode int32
 
 const (
+	ResolveReply_NONE                  ResolveReply_ErrorCode = 0
 	ResolveReply_SOCKET_EAI_ADDRFAMILY ResolveReply_ErrorCode = 1
 	ResolveReply_SOCKET_EAI_AGAIN      ResolveReply_ErrorCode = 2
 	ResolveReply_SOCKET_EAI_BADFLAGS   ResolveReply_ErrorCode = 3
@@ -896,1927 +1004,3078 @@ const (
 	ResolveReply_SOCKET_EAI_MAX        ResolveReply_ErrorCode = 15
 )
 
-var ResolveReply_ErrorCode_name = map[int32]string{
-	1:  "SOCKET_EAI_ADDRFAMILY",
-	2:  "SOCKET_EAI_AGAIN",
-	3:  "SOCKET_EAI_BADFLAGS",
-	4:  "SOCKET_EAI_FAIL",
-	5:  "SOCKET_EAI_FAMILY",
-	6:  "SOCKET_EAI_MEMORY",
-	7:  "SOCKET_EAI_NODATA",
-	8:  "SOCKET_EAI_NONAME",
-	9:  "SOCKET_EAI_SERVICE",
-	10: "SOCKET_EAI_SOCKTYPE",
-	11: "SOCKET_EAI_SYSTEM",
-	12: "SOCKET_EAI_BADHINTS",
-	13: "SOCKET_EAI_PROTOCOL",
-	14: "SOCKET_EAI_OVERFLOW",
-	15: "SOCKET_EAI_MAX",
-}
-var ResolveReply_ErrorCode_value = map[string]int32{
-	"SOCKET_EAI_ADDRFAMILY": 1,
-	"SOCKET_EAI_AGAIN":      2,
-	"SOCKET_EAI_BADFLAGS":   3,
-	"SOCKET_EAI_FAIL":       4,
-	"SOCKET_EAI_FAMILY":     5,
-	"SOCKET_EAI_MEMORY":     6,
-	"SOCKET_EAI_NODATA":     7,
-	"SOCKET_EAI_NONAME":     8,
-	"SOCKET_EAI_SERVICE":    9,
-	"SOCKET_EAI_SOCKTYPE":   10,
-	"SOCKET_EAI_SYSTEM":     11,
-	"SOCKET_EAI_BADHINTS":   12,
-	"SOCKET_EAI_PROTOCOL":   13,
-	"SOCKET_EAI_OVERFLOW":   14,
-	"SOCKET_EAI_MAX":        15,
-}
+// Enum value maps for ResolveReply_ErrorCode.
+var (
+	ResolveReply_ErrorCode_name = map[int32]string{
+		0:  "NONE",
+		1:  "SOCKET_EAI_ADDRFAMILY",
+		2:  "SOCKET_EAI_AGAIN",
+		3:  "SOCKET_EAI_BADFLAGS",
+		4:  "SOCKET_EAI_FAIL",
+		5:  "SOCKET_EAI_FAMILY",
+		6:  "SOCKET_EAI_MEMORY",
+		7:  "SOCKET_EAI_NODATA",
+		8:  "SOCKET_EAI_NONAME",
+		9:  "SOCKET_EAI_SERVICE",
+		10: "SOCKET_EAI_SOCKTYPE",
+		11: "SOCKET_EAI_SYSTEM",
+		12: "SOCKET_EAI_BADHINTS",
+		13: "SOCKET_EAI_PROTOCOL",
+		14: "SOCKET_EAI_OVERFLOW",
+		15: "SOCKET_EAI_MAX",
+	}
+	ResolveReply_ErrorCode_value = map[string]int32{
+		"NONE":                  0,
+		"SOCKET_EAI_ADDRFAMILY": 1,
+		"SOCKET_EAI_AGAIN":      2,
+		"SOCKET_EAI_BADFLAGS":   3,
+		"SOCKET_EAI_FAIL":       4,
+		"SOCKET_EAI_FAMILY":     5,
+		"SOCKET_EAI_MEMORY":     6,
+		"SOCKET_EAI_NODATA":     7,
+		"SOCKET_EAI_NONAME":     8,
+		"SOCKET_EAI_SERVICE":    9,
+		"SOCKET_EAI_SOCKTYPE":   10,
+		"SOCKET_EAI_SYSTEM":     11,
+		"SOCKET_EAI_BADHINTS":   12,
+		"SOCKET_EAI_PROTOCOL":   13,
+		"SOCKET_EAI_OVERFLOW":   14,
+		"SOCKET_EAI_MAX":        15,
+	}
+)
 
 func (x ResolveReply_ErrorCode) Enum() *ResolveReply_ErrorCode {
 	p := new(ResolveReply_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x ResolveReply_ErrorCode) String() string {
-	return proto.EnumName(ResolveReply_ErrorCode_name, int32(x))
-}
-func (x *ResolveReply_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(ResolveReply_ErrorCode_value, data, "ResolveReply_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = ResolveReply_ErrorCode(value)
-	return nil
-}
-func (ResolveReply_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{33, 0}
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type RemoteSocketServiceError struct {
-	SystemError          *int32   `protobuf:"varint,1,opt,name=system_error,json=systemError,def=0" json:"system_error,omitempty"`
-	ErrorDetail          *string  `protobuf:"bytes,2,opt,name=error_detail,json=errorDetail" json:"error_detail,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (ResolveReply_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_socket_service_proto_enumTypes[9].Descriptor()
 }
 
-func (m *RemoteSocketServiceError) Reset()         { *m = RemoteSocketServiceError{} }
-func (m *RemoteSocketServiceError) String() string { return proto.CompactTextString(m) }
-func (*RemoteSocketServiceError) ProtoMessage()    {}
-func (*RemoteSocketServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{0}
+func (ResolveReply_ErrorCode) Type() protoreflect.EnumType {
+	return &file_socket_service_proto_enumTypes[9]
 }
-func (m *RemoteSocketServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RemoteSocketServiceError.Unmarshal(m, b)
+
+func (x ResolveReply_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *RemoteSocketServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RemoteSocketServiceError.Marshal(b, m, deterministic)
+
+// Deprecated: Use ResolveReply_ErrorCode.Descriptor instead.
+func (ResolveReply_ErrorCode) EnumDescriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{33, 0}
 }
-func (dst *RemoteSocketServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RemoteSocketServiceError.Merge(dst, src)
+
+type RemoteSocketServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SystemError *int32  `protobuf:"varint,1,opt,name=system_error,json=systemError,proto3,oneof" json:"system_error,omitempty"`
+	ErrorDetail *string `protobuf:"bytes,2,opt,name=error_detail,json=errorDetail,proto3,oneof" json:"error_detail,omitempty"`
 }
-func (m *RemoteSocketServiceError) XXX_Size() int {
-	return xxx_messageInfo_RemoteSocketServiceError.Size(m)
+
+func (x *RemoteSocketServiceError) Reset() {
+	*x = RemoteSocketServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *RemoteSocketServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_RemoteSocketServiceError.DiscardUnknown(m)
+
+func (x *RemoteSocketServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_RemoteSocketServiceError proto.InternalMessageInfo
+func (*RemoteSocketServiceError) ProtoMessage() {}
+
+func (x *RemoteSocketServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
+}
 
-const Default_RemoteSocketServiceError_SystemError int32 = 0
+// Deprecated: Use RemoteSocketServiceError.ProtoReflect.Descriptor instead.
+func (*RemoteSocketServiceError) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{0}
+}
 
-func (m *RemoteSocketServiceError) GetSystemError() int32 {
-	if m != nil && m.SystemError != nil {
-		return *m.SystemError
+func (x *RemoteSocketServiceError) GetSystemError() int32 {
+	if x != nil && x.SystemError != nil {
+		return *x.SystemError
 	}
-	return Default_RemoteSocketServiceError_SystemError
+	return 0
 }
 
-func (m *RemoteSocketServiceError) GetErrorDetail() string {
-	if m != nil && m.ErrorDetail != nil {
-		return *m.ErrorDetail
+func (x *RemoteSocketServiceError) GetErrorDetail() string {
+	if x != nil && x.ErrorDetail != nil {
+		return *x.ErrorDetail
 	}
 	return ""
 }
 
 type AddressPort struct {
-	Port                 *int32   `protobuf:"varint,1,req,name=port" json:"port,omitempty"`
-	PackedAddress        []byte   `protobuf:"bytes,2,opt,name=packed_address,json=packedAddress" json:"packed_address,omitempty"`
-	HostnameHint         *string  `protobuf:"bytes,3,opt,name=hostname_hint,json=hostnameHint" json:"hostname_hint,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *AddressPort) Reset()         { *m = AddressPort{} }
-func (m *AddressPort) String() string { return proto.CompactTextString(m) }
-func (*AddressPort) ProtoMessage()    {}
-func (*AddressPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{1}
-}
-func (m *AddressPort) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AddressPort.Unmarshal(m, b)
+	Port          int32   `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+	PackedAddress []byte  `protobuf:"bytes,2,opt,name=packed_address,json=packedAddress,proto3,oneof" json:"packed_address,omitempty"`
+	HostnameHint  *string `protobuf:"bytes,3,opt,name=hostname_hint,json=hostnameHint,proto3,oneof" json:"hostname_hint,omitempty"`
 }
-func (m *AddressPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AddressPort.Marshal(b, m, deterministic)
-}
-func (dst *AddressPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AddressPort.Merge(dst, src)
+
+func (x *AddressPort) Reset() {
+	*x = AddressPort{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AddressPort) XXX_Size() int {
-	return xxx_messageInfo_AddressPort.Size(m)
+
+func (x *AddressPort) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AddressPort) XXX_DiscardUnknown() {
-	xxx_messageInfo_AddressPort.DiscardUnknown(m)
+
+func (*AddressPort) ProtoMessage() {}
+
+func (x *AddressPort) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_AddressPort proto.InternalMessageInfo
+// Deprecated: Use AddressPort.ProtoReflect.Descriptor instead.
+func (*AddressPort) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *AddressPort) GetPort() int32 {
-	if m != nil && m.Port != nil {
-		return *m.Port
+func (x *AddressPort) GetPort() int32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *AddressPort) GetPackedAddress() []byte {
-	if m != nil {
-		return m.PackedAddress
+func (x *AddressPort) GetPackedAddress() []byte {
+	if x != nil {
+		return x.PackedAddress
 	}
 	return nil
 }
 
-func (m *AddressPort) GetHostnameHint() string {
-	if m != nil && m.HostnameHint != nil {
-		return *m.HostnameHint
+func (x *AddressPort) GetHostnameHint() string {
+	if x != nil && x.HostnameHint != nil {
+		return *x.HostnameHint
 	}
 	return ""
 }
 
 type CreateSocketRequest struct {
-	Family               *CreateSocketRequest_SocketFamily   `protobuf:"varint,1,req,name=family,enum=appengine.CreateSocketRequest_SocketFamily" json:"family,omitempty"`
-	Protocol             *CreateSocketRequest_SocketProtocol `protobuf:"varint,2,req,name=protocol,enum=appengine.CreateSocketRequest_SocketProtocol" json:"protocol,omitempty"`
-	SocketOptions        []*SocketOption                     `protobuf:"bytes,3,rep,name=socket_options,json=socketOptions" json:"socket_options,omitempty"`
-	ProxyExternalIp      *AddressPort                        `protobuf:"bytes,4,opt,name=proxy_external_ip,json=proxyExternalIp" json:"proxy_external_ip,omitempty"`
-	ListenBacklog        *int32                              `protobuf:"varint,5,opt,name=listen_backlog,json=listenBacklog,def=0" json:"listen_backlog,omitempty"`
-	RemoteIp             *AddressPort                        `protobuf:"bytes,6,opt,name=remote_ip,json=remoteIp" json:"remote_ip,omitempty"`
-	AppId                *string                             `protobuf:"bytes,9,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	ProjectId            *int64                              `protobuf:"varint,10,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                            `json:"-"`
-	XXX_unrecognized     []byte                              `json:"-"`
-	XXX_sizecache        int32                               `json:"-"`
-}
-
-func (m *CreateSocketRequest) Reset()         { *m = CreateSocketRequest{} }
-func (m *CreateSocketRequest) String() string { return proto.CompactTextString(m) }
-func (*CreateSocketRequest) ProtoMessage()    {}
-func (*CreateSocketRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{2}
-}
-func (m *CreateSocketRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateSocketRequest.Unmarshal(m, b)
-}
-func (m *CreateSocketRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateSocketRequest.Marshal(b, m, deterministic)
-}
-func (dst *CreateSocketRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateSocketRequest.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Family          CreateSocketRequest_SocketFamily   `protobuf:"varint,1,opt,name=family,proto3,enum=appengine.CreateSocketRequest_SocketFamily" json:"family,omitempty"`
+	Protocol        CreateSocketRequest_SocketProtocol `protobuf:"varint,2,opt,name=protocol,proto3,enum=appengine.CreateSocketRequest_SocketProtocol" json:"protocol,omitempty"`
+	SocketOptions   []*SocketOption                    `protobuf:"bytes,3,rep,name=socket_options,json=socketOptions,proto3" json:"socket_options,omitempty"`
+	ProxyExternalIp *AddressPort                       `protobuf:"bytes,4,opt,name=proxy_external_ip,json=proxyExternalIp,proto3,oneof" json:"proxy_external_ip,omitempty"`
+	ListenBacklog   *int32                             `protobuf:"varint,5,opt,name=listen_backlog,json=listenBacklog,proto3,oneof" json:"listen_backlog,omitempty"`
+	RemoteIp        *AddressPort                       `protobuf:"bytes,6,opt,name=remote_ip,json=remoteIp,proto3,oneof" json:"remote_ip,omitempty"`
+	AppId           *string                            `protobuf:"bytes,9,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
+	ProjectId       *int64                             `protobuf:"varint,10,opt,name=project_id,json=projectId,proto3,oneof" json:"project_id,omitempty"`
 }
-func (m *CreateSocketRequest) XXX_Size() int {
-	return xxx_messageInfo_CreateSocketRequest.Size(m)
+
+func (x *CreateSocketRequest) Reset() {
+	*x = CreateSocketRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateSocketRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateSocketRequest.DiscardUnknown(m)
+
+func (x *CreateSocketRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_CreateSocketRequest proto.InternalMessageInfo
+func (*CreateSocketRequest) ProtoMessage() {}
+
+func (x *CreateSocketRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
+}
 
-const Default_CreateSocketRequest_ListenBacklog int32 = 0
+// Deprecated: Use CreateSocketRequest.ProtoReflect.Descriptor instead.
+func (*CreateSocketRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *CreateSocketRequest) GetFamily() CreateSocketRequest_SocketFamily {
-	if m != nil && m.Family != nil {
-		return *m.Family
+func (x *CreateSocketRequest) GetFamily() CreateSocketRequest_SocketFamily {
+	if x != nil {
+		return x.Family
 	}
-	return CreateSocketRequest_IPv4
+	return CreateSocketRequest_NONE
 }
 
-func (m *CreateSocketRequest) GetProtocol() CreateSocketRequest_SocketProtocol {
-	if m != nil && m.Protocol != nil {
-		return *m.Protocol
+func (x *CreateSocketRequest) GetProtocol() CreateSocketRequest_SocketProtocol {
+	if x != nil {
+		return x.Protocol
 	}
-	return CreateSocketRequest_TCP
+	return CreateSocketRequest_SP_NONE
 }
 
-func (m *CreateSocketRequest) GetSocketOptions() []*SocketOption {
-	if m != nil {
-		return m.SocketOptions
+func (x *CreateSocketRequest) GetSocketOptions() []*SocketOption {
+	if x != nil {
+		return x.SocketOptions
 	}
 	return nil
 }
 
-func (m *CreateSocketRequest) GetProxyExternalIp() *AddressPort {
-	if m != nil {
-		return m.ProxyExternalIp
+func (x *CreateSocketRequest) GetProxyExternalIp() *AddressPort {
+	if x != nil {
+		return x.ProxyExternalIp
 	}
 	return nil
 }
 
-func (m *CreateSocketRequest) GetListenBacklog() int32 {
-	if m != nil && m.ListenBacklog != nil {
-		return *m.ListenBacklog
+func (x *CreateSocketRequest) GetListenBacklog() int32 {
+	if x != nil && x.ListenBacklog != nil {
+		return *x.ListenBacklog
 	}
-	return Default_CreateSocketRequest_ListenBacklog
+	return 0
 }
 
-func (m *CreateSocketRequest) GetRemoteIp() *AddressPort {
-	if m != nil {
-		return m.RemoteIp
+func (x *CreateSocketRequest) GetRemoteIp() *AddressPort {
+	if x != nil {
+		return x.RemoteIp
 	}
 	return nil
 }
 
-func (m *CreateSocketRequest) GetAppId() string {
-	if m != nil && m.AppId != nil {
-		return *m.AppId
+func (x *CreateSocketRequest) GetAppId() string {
+	if x != nil && x.AppId != nil {
+		return *x.AppId
 	}
 	return ""
 }
 
-func (m *CreateSocketRequest) GetProjectId() int64 {
-	if m != nil && m.ProjectId != nil {
-		return *m.ProjectId
+func (x *CreateSocketRequest) GetProjectId() int64 {
+	if x != nil && x.ProjectId != nil {
+		return *x.ProjectId
 	}
 	return 0
 }
 
 type CreateSocketReply struct {
-	SocketDescriptor             *string      `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	ServerAddress                *AddressPort `protobuf:"bytes,3,opt,name=server_address,json=serverAddress" json:"server_address,omitempty"`
-	ProxyExternalIp              *AddressPort `protobuf:"bytes,4,opt,name=proxy_external_ip,json=proxyExternalIp" json:"proxy_external_ip,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}     `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
-}
-
-func (m *CreateSocketReply) Reset()         { *m = CreateSocketReply{} }
-func (m *CreateSocketReply) String() string { return proto.CompactTextString(m) }
-func (*CreateSocketReply) ProtoMessage()    {}
-func (*CreateSocketReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{3}
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-var extRange_CreateSocketReply = []proto.ExtensionRange{
-	{Start: 1000, End: 536870911},
+	SocketDescriptor *string      `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3,oneof" json:"socket_descriptor,omitempty"`
+	ServerAddress    *AddressPort `protobuf:"bytes,3,opt,name=server_address,json=serverAddress,proto3,oneof" json:"server_address,omitempty"`
+	ProxyExternalIp  *AddressPort `protobuf:"bytes,4,opt,name=proxy_external_ip,json=proxyExternalIp,proto3,oneof" json:"proxy_external_ip,omitempty"`
 }
 
-func (*CreateSocketReply) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_CreateSocketReply
-}
-func (m *CreateSocketReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateSocketReply.Unmarshal(m, b)
-}
-func (m *CreateSocketReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateSocketReply.Marshal(b, m, deterministic)
-}
-func (dst *CreateSocketReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateSocketReply.Merge(dst, src)
+func (x *CreateSocketReply) Reset() {
+	*x = CreateSocketReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateSocketReply) XXX_Size() int {
-	return xxx_messageInfo_CreateSocketReply.Size(m)
+
+func (x *CreateSocketReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateSocketReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateSocketReply.DiscardUnknown(m)
+
+func (*CreateSocketReply) ProtoMessage() {}
+
+func (x *CreateSocketReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_CreateSocketReply proto.InternalMessageInfo
+// Deprecated: Use CreateSocketReply.ProtoReflect.Descriptor instead.
+func (*CreateSocketReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *CreateSocketReply) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *CreateSocketReply) GetSocketDescriptor() string {
+	if x != nil && x.SocketDescriptor != nil {
+		return *x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *CreateSocketReply) GetServerAddress() *AddressPort {
-	if m != nil {
-		return m.ServerAddress
+func (x *CreateSocketReply) GetServerAddress() *AddressPort {
+	if x != nil {
+		return x.ServerAddress
 	}
 	return nil
 }
 
-func (m *CreateSocketReply) GetProxyExternalIp() *AddressPort {
-	if m != nil {
-		return m.ProxyExternalIp
+func (x *CreateSocketReply) GetProxyExternalIp() *AddressPort {
+	if x != nil {
+		return x.ProxyExternalIp
 	}
 	return nil
 }
 
 type BindRequest struct {
-	SocketDescriptor     *string      `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	ProxyExternalIp      *AddressPort `protobuf:"bytes,2,req,name=proxy_external_ip,json=proxyExternalIp" json:"proxy_external_ip,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *BindRequest) Reset()         { *m = BindRequest{} }
-func (m *BindRequest) String() string { return proto.CompactTextString(m) }
-func (*BindRequest) ProtoMessage()    {}
-func (*BindRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{4}
-}
-func (m *BindRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BindRequest.Unmarshal(m, b)
+	SocketDescriptor string       `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	ProxyExternalIp  *AddressPort `protobuf:"bytes,2,opt,name=proxy_external_ip,json=proxyExternalIp,proto3" json:"proxy_external_ip,omitempty"`
 }
-func (m *BindRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BindRequest.Marshal(b, m, deterministic)
-}
-func (dst *BindRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BindRequest.Merge(dst, src)
+
+func (x *BindRequest) Reset() {
+	*x = BindRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *BindRequest) XXX_Size() int {
-	return xxx_messageInfo_BindRequest.Size(m)
+
+func (x *BindRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *BindRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_BindRequest.DiscardUnknown(m)
+
+func (*BindRequest) ProtoMessage() {}
+
+func (x *BindRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_BindRequest proto.InternalMessageInfo
+// Deprecated: Use BindRequest.ProtoReflect.Descriptor instead.
+func (*BindRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{4}
+}
 
-func (m *BindRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *BindRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *BindRequest) GetProxyExternalIp() *AddressPort {
-	if m != nil {
-		return m.ProxyExternalIp
+func (x *BindRequest) GetProxyExternalIp() *AddressPort {
+	if x != nil {
+		return x.ProxyExternalIp
 	}
 	return nil
 }
 
 type BindReply struct {
-	ProxyExternalIp      *AddressPort `protobuf:"bytes,1,opt,name=proxy_external_ip,json=proxyExternalIp" json:"proxy_external_ip,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *BindReply) Reset()         { *m = BindReply{} }
-func (m *BindReply) String() string { return proto.CompactTextString(m) }
-func (*BindReply) ProtoMessage()    {}
-func (*BindReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{5}
-}
-func (m *BindReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BindReply.Unmarshal(m, b)
+	ProxyExternalIp *AddressPort `protobuf:"bytes,1,opt,name=proxy_external_ip,json=proxyExternalIp,proto3,oneof" json:"proxy_external_ip,omitempty"`
 }
-func (m *BindReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BindReply.Marshal(b, m, deterministic)
-}
-func (dst *BindReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BindReply.Merge(dst, src)
+
+func (x *BindReply) Reset() {
+	*x = BindReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *BindReply) XXX_Size() int {
-	return xxx_messageInfo_BindReply.Size(m)
+
+func (x *BindReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *BindReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_BindReply.DiscardUnknown(m)
+
+func (*BindReply) ProtoMessage() {}
+
+func (x *BindReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_BindReply proto.InternalMessageInfo
+// Deprecated: Use BindReply.ProtoReflect.Descriptor instead.
+func (*BindReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *BindReply) GetProxyExternalIp() *AddressPort {
-	if m != nil {
-		return m.ProxyExternalIp
+func (x *BindReply) GetProxyExternalIp() *AddressPort {
+	if x != nil {
+		return x.ProxyExternalIp
 	}
 	return nil
 }
 
 type GetSocketNameRequest struct {
-	SocketDescriptor     *string  `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetSocketNameRequest) Reset()         { *m = GetSocketNameRequest{} }
-func (m *GetSocketNameRequest) String() string { return proto.CompactTextString(m) }
-func (*GetSocketNameRequest) ProtoMessage()    {}
-func (*GetSocketNameRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{6}
-}
-func (m *GetSocketNameRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSocketNameRequest.Unmarshal(m, b)
+	SocketDescriptor string `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
 }
-func (m *GetSocketNameRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSocketNameRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetSocketNameRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSocketNameRequest.Merge(dst, src)
+
+func (x *GetSocketNameRequest) Reset() {
+	*x = GetSocketNameRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetSocketNameRequest) XXX_Size() int {
-	return xxx_messageInfo_GetSocketNameRequest.Size(m)
+
+func (x *GetSocketNameRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetSocketNameRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSocketNameRequest.DiscardUnknown(m)
+
+func (*GetSocketNameRequest) ProtoMessage() {}
+
+func (x *GetSocketNameRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_GetSocketNameRequest proto.InternalMessageInfo
+// Deprecated: Use GetSocketNameRequest.ProtoReflect.Descriptor instead.
+func (*GetSocketNameRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{6}
+}
 
-func (m *GetSocketNameRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *GetSocketNameRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
 type GetSocketNameReply struct {
-	ProxyExternalIp      *AddressPort `protobuf:"bytes,2,opt,name=proxy_external_ip,json=proxyExternalIp" json:"proxy_external_ip,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetSocketNameReply) Reset()         { *m = GetSocketNameReply{} }
-func (m *GetSocketNameReply) String() string { return proto.CompactTextString(m) }
-func (*GetSocketNameReply) ProtoMessage()    {}
-func (*GetSocketNameReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{7}
-}
-func (m *GetSocketNameReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSocketNameReply.Unmarshal(m, b)
+	ProxyExternalIp *AddressPort `protobuf:"bytes,2,opt,name=proxy_external_ip,json=proxyExternalIp,proto3,oneof" json:"proxy_external_ip,omitempty"`
 }
-func (m *GetSocketNameReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSocketNameReply.Marshal(b, m, deterministic)
-}
-func (dst *GetSocketNameReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSocketNameReply.Merge(dst, src)
+
+func (x *GetSocketNameReply) Reset() {
+	*x = GetSocketNameReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetSocketNameReply) XXX_Size() int {
-	return xxx_messageInfo_GetSocketNameReply.Size(m)
+
+func (x *GetSocketNameReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetSocketNameReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSocketNameReply.DiscardUnknown(m)
+
+func (*GetSocketNameReply) ProtoMessage() {}
+
+func (x *GetSocketNameReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_GetSocketNameReply proto.InternalMessageInfo
+// Deprecated: Use GetSocketNameReply.ProtoReflect.Descriptor instead.
+func (*GetSocketNameReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{7}
+}
 
-func (m *GetSocketNameReply) GetProxyExternalIp() *AddressPort {
-	if m != nil {
-		return m.ProxyExternalIp
+func (x *GetSocketNameReply) GetProxyExternalIp() *AddressPort {
+	if x != nil {
+		return x.ProxyExternalIp
 	}
 	return nil
 }
 
 type GetPeerNameRequest struct {
-	SocketDescriptor     *string  `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetPeerNameRequest) Reset()         { *m = GetPeerNameRequest{} }
-func (m *GetPeerNameRequest) String() string { return proto.CompactTextString(m) }
-func (*GetPeerNameRequest) ProtoMessage()    {}
-func (*GetPeerNameRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{8}
-}
-func (m *GetPeerNameRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetPeerNameRequest.Unmarshal(m, b)
+	SocketDescriptor string `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
 }
-func (m *GetPeerNameRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetPeerNameRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetPeerNameRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetPeerNameRequest.Merge(dst, src)
+
+func (x *GetPeerNameRequest) Reset() {
+	*x = GetPeerNameRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetPeerNameRequest) XXX_Size() int {
-	return xxx_messageInfo_GetPeerNameRequest.Size(m)
+
+func (x *GetPeerNameRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetPeerNameRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetPeerNameRequest.DiscardUnknown(m)
+
+func (*GetPeerNameRequest) ProtoMessage() {}
+
+func (x *GetPeerNameRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_GetPeerNameRequest proto.InternalMessageInfo
+// Deprecated: Use GetPeerNameRequest.ProtoReflect.Descriptor instead.
+func (*GetPeerNameRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{8}
+}
 
-func (m *GetPeerNameRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *GetPeerNameRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
 type GetPeerNameReply struct {
-	PeerIp               *AddressPort `protobuf:"bytes,2,opt,name=peer_ip,json=peerIp" json:"peer_ip,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetPeerNameReply) Reset()         { *m = GetPeerNameReply{} }
-func (m *GetPeerNameReply) String() string { return proto.CompactTextString(m) }
-func (*GetPeerNameReply) ProtoMessage()    {}
-func (*GetPeerNameReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{9}
-}
-func (m *GetPeerNameReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetPeerNameReply.Unmarshal(m, b)
-}
-func (m *GetPeerNameReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetPeerNameReply.Marshal(b, m, deterministic)
-}
-func (dst *GetPeerNameReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetPeerNameReply.Merge(dst, src)
+	PeerIp *AddressPort `protobuf:"bytes,2,opt,name=peer_ip,json=peerIp,proto3,oneof" json:"peer_ip,omitempty"`
 }
-func (m *GetPeerNameReply) XXX_Size() int {
-	return xxx_messageInfo_GetPeerNameReply.Size(m)
+
+func (x *GetPeerNameReply) Reset() {
+	*x = GetPeerNameReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetPeerNameReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetPeerNameReply.DiscardUnknown(m)
+
+func (x *GetPeerNameReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_GetPeerNameReply proto.InternalMessageInfo
+func (*GetPeerNameReply) ProtoMessage() {}
 
-func (m *GetPeerNameReply) GetPeerIp() *AddressPort {
-	if m != nil {
-		return m.PeerIp
+func (x *GetPeerNameReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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 nil
+	return mi.MessageOf(x)
 }
 
-type SocketOption struct {
-	Level                *SocketOption_SocketOptionLevel `protobuf:"varint,1,req,name=level,enum=appengine.SocketOption_SocketOptionLevel" json:"level,omitempty"`
-	Option               *SocketOption_SocketOptionName  `protobuf:"varint,2,req,name=option,enum=appengine.SocketOption_SocketOptionName" json:"option,omitempty"`
-	Value                []byte                          `protobuf:"bytes,3,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
+// Deprecated: Use GetPeerNameReply.ProtoReflect.Descriptor instead.
+func (*GetPeerNameReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *SocketOption) Reset()         { *m = SocketOption{} }
-func (m *SocketOption) String() string { return proto.CompactTextString(m) }
-func (*SocketOption) ProtoMessage()    {}
-func (*SocketOption) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{10}
-}
-func (m *SocketOption) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketOption.Unmarshal(m, b)
+func (x *GetPeerNameReply) GetPeerIp() *AddressPort {
+	if x != nil {
+		return x.PeerIp
+	}
+	return nil
 }
-func (m *SocketOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketOption.Marshal(b, m, deterministic)
+
+type SocketOption struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Level  SocketOption_SocketOptionLevel `protobuf:"varint,1,opt,name=level,proto3,enum=appengine.SocketOption_SocketOptionLevel" json:"level,omitempty"`
+	Option SocketOption_SocketOptionName  `protobuf:"varint,2,opt,name=option,proto3,enum=appengine.SocketOption_SocketOptionName" json:"option,omitempty"`
+	Value  []byte                         `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (dst *SocketOption) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketOption.Merge(dst, src)
+
+func (x *SocketOption) Reset() {
+	*x = SocketOption{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SocketOption) XXX_Size() int {
-	return xxx_messageInfo_SocketOption.Size(m)
+
+func (x *SocketOption) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SocketOption) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketOption.DiscardUnknown(m)
+
+func (*SocketOption) ProtoMessage() {}
+
+func (x *SocketOption) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_SocketOption proto.InternalMessageInfo
+// Deprecated: Use SocketOption.ProtoReflect.Descriptor instead.
+func (*SocketOption) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{10}
+}
 
-func (m *SocketOption) GetLevel() SocketOption_SocketOptionLevel {
-	if m != nil && m.Level != nil {
-		return *m.Level
+func (x *SocketOption) GetLevel() SocketOption_SocketOptionLevel {
+	if x != nil {
+		return x.Level
 	}
 	return SocketOption_SOCKET_SOL_IP
 }
 
-func (m *SocketOption) GetOption() SocketOption_SocketOptionName {
-	if m != nil && m.Option != nil {
-		return *m.Option
+func (x *SocketOption) GetOption() SocketOption_SocketOptionName {
+	if x != nil {
+		return x.Option
 	}
-	return SocketOption_SOCKET_SO_DEBUG
+	return SocketOption_SOP_NONE
 }
 
-func (m *SocketOption) GetValue() []byte {
-	if m != nil {
-		return m.Value
+func (x *SocketOption) GetValue() []byte {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
 type SetSocketOptionsRequest struct {
-	SocketDescriptor     *string         `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	Options              []*SocketOption `protobuf:"bytes,2,rep,name=options" json:"options,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *SetSocketOptionsRequest) Reset()         { *m = SetSocketOptionsRequest{} }
-func (m *SetSocketOptionsRequest) String() string { return proto.CompactTextString(m) }
-func (*SetSocketOptionsRequest) ProtoMessage()    {}
-func (*SetSocketOptionsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{11}
-}
-func (m *SetSocketOptionsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SetSocketOptionsRequest.Unmarshal(m, b)
+	SocketDescriptor string          `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	Options          []*SocketOption `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"`
 }
-func (m *SetSocketOptionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SetSocketOptionsRequest.Marshal(b, m, deterministic)
-}
-func (dst *SetSocketOptionsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SetSocketOptionsRequest.Merge(dst, src)
+
+func (x *SetSocketOptionsRequest) Reset() {
+	*x = SetSocketOptionsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SetSocketOptionsRequest) XXX_Size() int {
-	return xxx_messageInfo_SetSocketOptionsRequest.Size(m)
+
+func (x *SetSocketOptionsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SetSocketOptionsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SetSocketOptionsRequest.DiscardUnknown(m)
+
+func (*SetSocketOptionsRequest) ProtoMessage() {}
+
+func (x *SetSocketOptionsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_SetSocketOptionsRequest proto.InternalMessageInfo
+// Deprecated: Use SetSocketOptionsRequest.ProtoReflect.Descriptor instead.
+func (*SetSocketOptionsRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{11}
+}
 
-func (m *SetSocketOptionsRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *SetSocketOptionsRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *SetSocketOptionsRequest) GetOptions() []*SocketOption {
-	if m != nil {
-		return m.Options
+func (x *SetSocketOptionsRequest) GetOptions() []*SocketOption {
+	if x != nil {
+		return x.Options
 	}
 	return nil
 }
 
 type SetSocketOptionsReply struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *SetSocketOptionsReply) Reset()         { *m = SetSocketOptionsReply{} }
-func (m *SetSocketOptionsReply) String() string { return proto.CompactTextString(m) }
-func (*SetSocketOptionsReply) ProtoMessage()    {}
-func (*SetSocketOptionsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{12}
-}
-func (m *SetSocketOptionsReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SetSocketOptionsReply.Unmarshal(m, b)
-}
-func (m *SetSocketOptionsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SetSocketOptionsReply.Marshal(b, m, deterministic)
-}
-func (dst *SetSocketOptionsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SetSocketOptionsReply.Merge(dst, src)
-}
-func (m *SetSocketOptionsReply) XXX_Size() int {
-	return xxx_messageInfo_SetSocketOptionsReply.Size(m)
+func (x *SetSocketOptionsReply) Reset() {
+	*x = SetSocketOptionsReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SetSocketOptionsReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_SetSocketOptionsReply.DiscardUnknown(m)
+
+func (x *SetSocketOptionsReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_SetSocketOptionsReply proto.InternalMessageInfo
+func (*SetSocketOptionsReply) ProtoMessage() {}
 
-type GetSocketOptionsRequest struct {
-	SocketDescriptor     *string         `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	Options              []*SocketOption `protobuf:"bytes,2,rep,name=options" json:"options,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+func (x *SetSocketOptionsReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-func (m *GetSocketOptionsRequest) Reset()         { *m = GetSocketOptionsRequest{} }
-func (m *GetSocketOptionsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetSocketOptionsRequest) ProtoMessage()    {}
-func (*GetSocketOptionsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{13}
-}
-func (m *GetSocketOptionsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSocketOptionsRequest.Unmarshal(m, b)
+// Deprecated: Use SetSocketOptionsReply.ProtoReflect.Descriptor instead.
+func (*SetSocketOptionsReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{12}
 }
-func (m *GetSocketOptionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSocketOptionsRequest.Marshal(b, m, deterministic)
+
+type GetSocketOptionsRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SocketDescriptor string          `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	Options          []*SocketOption `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"`
 }
-func (dst *GetSocketOptionsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSocketOptionsRequest.Merge(dst, src)
+
+func (x *GetSocketOptionsRequest) Reset() {
+	*x = GetSocketOptionsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetSocketOptionsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetSocketOptionsRequest.Size(m)
+
+func (x *GetSocketOptionsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetSocketOptionsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSocketOptionsRequest.DiscardUnknown(m)
+
+func (*GetSocketOptionsRequest) ProtoMessage() {}
+
+func (x *GetSocketOptionsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_GetSocketOptionsRequest proto.InternalMessageInfo
+// Deprecated: Use GetSocketOptionsRequest.ProtoReflect.Descriptor instead.
+func (*GetSocketOptionsRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{13}
+}
 
-func (m *GetSocketOptionsRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *GetSocketOptionsRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *GetSocketOptionsRequest) GetOptions() []*SocketOption {
-	if m != nil {
-		return m.Options
+func (x *GetSocketOptionsRequest) GetOptions() []*SocketOption {
+	if x != nil {
+		return x.Options
 	}
 	return nil
 }
 
 type GetSocketOptionsReply struct {
-	Options              []*SocketOption `protobuf:"bytes,2,rep,name=options" json:"options,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetSocketOptionsReply) Reset()         { *m = GetSocketOptionsReply{} }
-func (m *GetSocketOptionsReply) String() string { return proto.CompactTextString(m) }
-func (*GetSocketOptionsReply) ProtoMessage()    {}
-func (*GetSocketOptionsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{14}
+	Options []*SocketOption `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"`
 }
-func (m *GetSocketOptionsReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSocketOptionsReply.Unmarshal(m, b)
-}
-func (m *GetSocketOptionsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSocketOptionsReply.Marshal(b, m, deterministic)
-}
-func (dst *GetSocketOptionsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSocketOptionsReply.Merge(dst, src)
+
+func (x *GetSocketOptionsReply) Reset() {
+	*x = GetSocketOptionsReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetSocketOptionsReply) XXX_Size() int {
-	return xxx_messageInfo_GetSocketOptionsReply.Size(m)
+
+func (x *GetSocketOptionsReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetSocketOptionsReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSocketOptionsReply.DiscardUnknown(m)
+
+func (*GetSocketOptionsReply) ProtoMessage() {}
+
+func (x *GetSocketOptionsReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_GetSocketOptionsReply proto.InternalMessageInfo
+// Deprecated: Use GetSocketOptionsReply.ProtoReflect.Descriptor instead.
+func (*GetSocketOptionsReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{14}
+}
 
-func (m *GetSocketOptionsReply) GetOptions() []*SocketOption {
-	if m != nil {
-		return m.Options
+func (x *GetSocketOptionsReply) GetOptions() []*SocketOption {
+	if x != nil {
+		return x.Options
 	}
 	return nil
 }
 
 type ConnectRequest struct {
-	SocketDescriptor     *string      `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	RemoteIp             *AddressPort `protobuf:"bytes,2,req,name=remote_ip,json=remoteIp" json:"remote_ip,omitempty"`
-	TimeoutSeconds       *float64     `protobuf:"fixed64,3,opt,name=timeout_seconds,json=timeoutSeconds,def=-1" json:"timeout_seconds,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ConnectRequest) Reset()         { *m = ConnectRequest{} }
-func (m *ConnectRequest) String() string { return proto.CompactTextString(m) }
-func (*ConnectRequest) ProtoMessage()    {}
-func (*ConnectRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{15}
-}
-func (m *ConnectRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ConnectRequest.Unmarshal(m, b)
-}
-func (m *ConnectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ConnectRequest.Marshal(b, m, deterministic)
+	SocketDescriptor string       `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	RemoteIp         *AddressPort `protobuf:"bytes,2,opt,name=remote_ip,json=remoteIp,proto3" json:"remote_ip,omitempty"`
+	TimeoutSeconds   *float64     `protobuf:"fixed64,3,opt,name=timeout_seconds,json=timeoutSeconds,proto3,oneof" json:"timeout_seconds,omitempty"`
 }
-func (dst *ConnectRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConnectRequest.Merge(dst, src)
-}
-func (m *ConnectRequest) XXX_Size() int {
-	return xxx_messageInfo_ConnectRequest.Size(m)
+
+func (x *ConnectRequest) Reset() {
+	*x = ConnectRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ConnectRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConnectRequest.DiscardUnknown(m)
+
+func (x *ConnectRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ConnectRequest proto.InternalMessageInfo
+func (*ConnectRequest) ProtoMessage() {}
 
-const Default_ConnectRequest_TimeoutSeconds float64 = -1
+func (x *ConnectRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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 ConnectRequest.ProtoReflect.Descriptor instead.
+func (*ConnectRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{15}
+}
 
-func (m *ConnectRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *ConnectRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *ConnectRequest) GetRemoteIp() *AddressPort {
-	if m != nil {
-		return m.RemoteIp
+func (x *ConnectRequest) GetRemoteIp() *AddressPort {
+	if x != nil {
+		return x.RemoteIp
 	}
 	return nil
 }
 
-func (m *ConnectRequest) GetTimeoutSeconds() float64 {
-	if m != nil && m.TimeoutSeconds != nil {
-		return *m.TimeoutSeconds
+func (x *ConnectRequest) GetTimeoutSeconds() float64 {
+	if x != nil && x.TimeoutSeconds != nil {
+		return *x.TimeoutSeconds
 	}
-	return Default_ConnectRequest_TimeoutSeconds
+	return 0
 }
 
 type ConnectReply struct {
-	ProxyExternalIp              *AddressPort `protobuf:"bytes,1,opt,name=proxy_external_ip,json=proxyExternalIp" json:"proxy_external_ip,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}     `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ConnectReply) Reset()         { *m = ConnectReply{} }
-func (m *ConnectReply) String() string { return proto.CompactTextString(m) }
-func (*ConnectReply) ProtoMessage()    {}
-func (*ConnectReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{16}
+	ProxyExternalIp *AddressPort `protobuf:"bytes,1,opt,name=proxy_external_ip,json=proxyExternalIp,proto3,oneof" json:"proxy_external_ip,omitempty"`
 }
 
-var extRange_ConnectReply = []proto.ExtensionRange{
-	{Start: 1000, End: 536870911},
+func (x *ConnectReply) Reset() {
+	*x = ConnectReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-func (*ConnectReply) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_ConnectReply
-}
-func (m *ConnectReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ConnectReply.Unmarshal(m, b)
+func (x *ConnectReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ConnectReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ConnectReply.Marshal(b, m, deterministic)
-}
-func (dst *ConnectReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConnectReply.Merge(dst, src)
-}
-func (m *ConnectReply) XXX_Size() int {
-	return xxx_messageInfo_ConnectReply.Size(m)
-}
-func (m *ConnectReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConnectReply.DiscardUnknown(m)
+
+func (*ConnectReply) ProtoMessage() {}
+
+func (x *ConnectReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_ConnectReply proto.InternalMessageInfo
+// Deprecated: Use ConnectReply.ProtoReflect.Descriptor instead.
+func (*ConnectReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{16}
+}
 
-func (m *ConnectReply) GetProxyExternalIp() *AddressPort {
-	if m != nil {
-		return m.ProxyExternalIp
+func (x *ConnectReply) GetProxyExternalIp() *AddressPort {
+	if x != nil {
+		return x.ProxyExternalIp
 	}
 	return nil
 }
 
 type ListenRequest struct {
-	SocketDescriptor     *string  `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	Backlog              *int32   `protobuf:"varint,2,req,name=backlog" json:"backlog,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ListenRequest) Reset()         { *m = ListenRequest{} }
-func (m *ListenRequest) String() string { return proto.CompactTextString(m) }
-func (*ListenRequest) ProtoMessage()    {}
-func (*ListenRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{17}
+	SocketDescriptor string `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	Backlog          int32  `protobuf:"varint,2,opt,name=backlog,proto3" json:"backlog,omitempty"`
 }
-func (m *ListenRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ListenRequest.Unmarshal(m, b)
-}
-func (m *ListenRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ListenRequest.Marshal(b, m, deterministic)
-}
-func (dst *ListenRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ListenRequest.Merge(dst, src)
+
+func (x *ListenRequest) Reset() {
+	*x = ListenRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ListenRequest) XXX_Size() int {
-	return xxx_messageInfo_ListenRequest.Size(m)
+
+func (x *ListenRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ListenRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ListenRequest.DiscardUnknown(m)
+
+func (*ListenRequest) ProtoMessage() {}
+
+func (x *ListenRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_ListenRequest proto.InternalMessageInfo
+// Deprecated: Use ListenRequest.ProtoReflect.Descriptor instead.
+func (*ListenRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{17}
+}
 
-func (m *ListenRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *ListenRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *ListenRequest) GetBacklog() int32 {
-	if m != nil && m.Backlog != nil {
-		return *m.Backlog
+func (x *ListenRequest) GetBacklog() int32 {
+	if x != nil {
+		return x.Backlog
 	}
 	return 0
 }
 
 type ListenReply struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *ListenReply) Reset()         { *m = ListenReply{} }
-func (m *ListenReply) String() string { return proto.CompactTextString(m) }
-func (*ListenReply) ProtoMessage()    {}
-func (*ListenReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{18}
-}
-func (m *ListenReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ListenReply.Unmarshal(m, b)
-}
-func (m *ListenReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ListenReply.Marshal(b, m, deterministic)
-}
-func (dst *ListenReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ListenReply.Merge(dst, src)
-}
-func (m *ListenReply) XXX_Size() int {
-	return xxx_messageInfo_ListenReply.Size(m)
+func (x *ListenReply) Reset() {
+	*x = ListenReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ListenReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_ListenReply.DiscardUnknown(m)
+
+func (x *ListenReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ListenReply proto.InternalMessageInfo
+func (*ListenReply) ProtoMessage() {}
 
-type AcceptRequest struct {
-	SocketDescriptor     *string  `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	TimeoutSeconds       *float64 `protobuf:"fixed64,2,opt,name=timeout_seconds,json=timeoutSeconds,def=-1" json:"timeout_seconds,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *ListenReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-func (m *AcceptRequest) Reset()         { *m = AcceptRequest{} }
-func (m *AcceptRequest) String() string { return proto.CompactTextString(m) }
-func (*AcceptRequest) ProtoMessage()    {}
-func (*AcceptRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{19}
-}
-func (m *AcceptRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AcceptRequest.Unmarshal(m, b)
-}
-func (m *AcceptRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AcceptRequest.Marshal(b, m, deterministic)
+// Deprecated: Use ListenReply.ProtoReflect.Descriptor instead.
+func (*ListenReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{18}
 }
-func (dst *AcceptRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AcceptRequest.Merge(dst, src)
+
+type AcceptRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SocketDescriptor string   `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	TimeoutSeconds   *float64 `protobuf:"fixed64,2,opt,name=timeout_seconds,json=timeoutSeconds,proto3,oneof" json:"timeout_seconds,omitempty"`
 }
-func (m *AcceptRequest) XXX_Size() int {
-	return xxx_messageInfo_AcceptRequest.Size(m)
+
+func (x *AcceptRequest) Reset() {
+	*x = AcceptRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AcceptRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_AcceptRequest.DiscardUnknown(m)
+
+func (x *AcceptRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_AcceptRequest proto.InternalMessageInfo
+func (*AcceptRequest) ProtoMessage() {}
 
-const Default_AcceptRequest_TimeoutSeconds float64 = -1
+func (x *AcceptRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
+}
 
-func (m *AcceptRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+// Deprecated: Use AcceptRequest.ProtoReflect.Descriptor instead.
+func (*AcceptRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *AcceptRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *AcceptRequest) GetTimeoutSeconds() float64 {
-	if m != nil && m.TimeoutSeconds != nil {
-		return *m.TimeoutSeconds
+func (x *AcceptRequest) GetTimeoutSeconds() float64 {
+	if x != nil && x.TimeoutSeconds != nil {
+		return *x.TimeoutSeconds
 	}
-	return Default_AcceptRequest_TimeoutSeconds
+	return 0
 }
 
 type AcceptReply struct {
-	NewSocketDescriptor  []byte       `protobuf:"bytes,2,opt,name=new_socket_descriptor,json=newSocketDescriptor" json:"new_socket_descriptor,omitempty"`
-	RemoteAddress        *AddressPort `protobuf:"bytes,3,opt,name=remote_address,json=remoteAddress" json:"remote_address,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *AcceptReply) Reset()         { *m = AcceptReply{} }
-func (m *AcceptReply) String() string { return proto.CompactTextString(m) }
-func (*AcceptReply) ProtoMessage()    {}
-func (*AcceptReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{20}
-}
-func (m *AcceptReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AcceptReply.Unmarshal(m, b)
+	NewSocketDescriptor []byte       `protobuf:"bytes,2,opt,name=new_socket_descriptor,json=newSocketDescriptor,proto3,oneof" json:"new_socket_descriptor,omitempty"`
+	RemoteAddress       *AddressPort `protobuf:"bytes,3,opt,name=remote_address,json=remoteAddress,proto3,oneof" json:"remote_address,omitempty"`
 }
-func (m *AcceptReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AcceptReply.Marshal(b, m, deterministic)
-}
-func (dst *AcceptReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AcceptReply.Merge(dst, src)
+
+func (x *AcceptReply) Reset() {
+	*x = AcceptReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *AcceptReply) XXX_Size() int {
-	return xxx_messageInfo_AcceptReply.Size(m)
+
+func (x *AcceptReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *AcceptReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_AcceptReply.DiscardUnknown(m)
+
+func (*AcceptReply) ProtoMessage() {}
+
+func (x *AcceptReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_AcceptReply proto.InternalMessageInfo
+// Deprecated: Use AcceptReply.ProtoReflect.Descriptor instead.
+func (*AcceptReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{20}
+}
 
-func (m *AcceptReply) GetNewSocketDescriptor() []byte {
-	if m != nil {
-		return m.NewSocketDescriptor
+func (x *AcceptReply) GetNewSocketDescriptor() []byte {
+	if x != nil {
+		return x.NewSocketDescriptor
 	}
 	return nil
 }
 
-func (m *AcceptReply) GetRemoteAddress() *AddressPort {
-	if m != nil {
-		return m.RemoteAddress
+func (x *AcceptReply) GetRemoteAddress() *AddressPort {
+	if x != nil {
+		return x.RemoteAddress
 	}
 	return nil
 }
 
 type ShutDownRequest struct {
-	SocketDescriptor     *string              `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	How                  *ShutDownRequest_How `protobuf:"varint,2,req,name=how,enum=appengine.ShutDownRequest_How" json:"how,omitempty"`
-	SendOffset           *int64               `protobuf:"varint,3,req,name=send_offset,json=sendOffset" json:"send_offset,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ShutDownRequest) Reset()         { *m = ShutDownRequest{} }
-func (m *ShutDownRequest) String() string { return proto.CompactTextString(m) }
-func (*ShutDownRequest) ProtoMessage()    {}
-func (*ShutDownRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{21}
-}
-func (m *ShutDownRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ShutDownRequest.Unmarshal(m, b)
+	SocketDescriptor string              `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	How              ShutDownRequest_How `protobuf:"varint,2,opt,name=how,proto3,enum=appengine.ShutDownRequest_How" json:"how,omitempty"`
+	SendOffset       int64               `protobuf:"varint,3,opt,name=send_offset,json=sendOffset,proto3" json:"send_offset,omitempty"`
 }
-func (m *ShutDownRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ShutDownRequest.Marshal(b, m, deterministic)
-}
-func (dst *ShutDownRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ShutDownRequest.Merge(dst, src)
+
+func (x *ShutDownRequest) Reset() {
+	*x = ShutDownRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ShutDownRequest) XXX_Size() int {
-	return xxx_messageInfo_ShutDownRequest.Size(m)
+
+func (x *ShutDownRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ShutDownRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ShutDownRequest.DiscardUnknown(m)
+
+func (*ShutDownRequest) ProtoMessage() {}
+
+func (x *ShutDownRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_ShutDownRequest proto.InternalMessageInfo
+// Deprecated: Use ShutDownRequest.ProtoReflect.Descriptor instead.
+func (*ShutDownRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{21}
+}
 
-func (m *ShutDownRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *ShutDownRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *ShutDownRequest) GetHow() ShutDownRequest_How {
-	if m != nil && m.How != nil {
-		return *m.How
+func (x *ShutDownRequest) GetHow() ShutDownRequest_How {
+	if x != nil {
+		return x.How
 	}
-	return ShutDownRequest_SOCKET_SHUT_RD
+	return ShutDownRequest_NONE
 }
 
-func (m *ShutDownRequest) GetSendOffset() int64 {
-	if m != nil && m.SendOffset != nil {
-		return *m.SendOffset
+func (x *ShutDownRequest) GetSendOffset() int64 {
+	if x != nil {
+		return x.SendOffset
 	}
 	return 0
 }
 
 type ShutDownReply struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *ShutDownReply) Reset()         { *m = ShutDownReply{} }
-func (m *ShutDownReply) String() string { return proto.CompactTextString(m) }
-func (*ShutDownReply) ProtoMessage()    {}
-func (*ShutDownReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{22}
-}
-func (m *ShutDownReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ShutDownReply.Unmarshal(m, b)
-}
-func (m *ShutDownReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ShutDownReply.Marshal(b, m, deterministic)
-}
-func (dst *ShutDownReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ShutDownReply.Merge(dst, src)
-}
-func (m *ShutDownReply) XXX_Size() int {
-	return xxx_messageInfo_ShutDownReply.Size(m)
+func (x *ShutDownReply) Reset() {
+	*x = ShutDownReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[22]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ShutDownReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_ShutDownReply.DiscardUnknown(m)
+
+func (x *ShutDownReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ShutDownReply proto.InternalMessageInfo
+func (*ShutDownReply) ProtoMessage() {}
 
-type CloseRequest struct {
-	SocketDescriptor     *string  `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	SendOffset           *int64   `protobuf:"varint,2,opt,name=send_offset,json=sendOffset,def=-1" json:"send_offset,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *ShutDownReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-func (m *CloseRequest) Reset()         { *m = CloseRequest{} }
-func (m *CloseRequest) String() string { return proto.CompactTextString(m) }
-func (*CloseRequest) ProtoMessage()    {}
-func (*CloseRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{23}
-}
-func (m *CloseRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CloseRequest.Unmarshal(m, b)
-}
-func (m *CloseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CloseRequest.Marshal(b, m, deterministic)
+// Deprecated: Use ShutDownReply.ProtoReflect.Descriptor instead.
+func (*ShutDownReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{22}
 }
-func (dst *CloseRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CloseRequest.Merge(dst, src)
+
+type CloseRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SocketDescriptor string `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	SendOffset       *int64 `protobuf:"varint,2,opt,name=send_offset,json=sendOffset,proto3,oneof" json:"send_offset,omitempty"`
 }
-func (m *CloseRequest) XXX_Size() int {
-	return xxx_messageInfo_CloseRequest.Size(m)
+
+func (x *CloseRequest) Reset() {
+	*x = CloseRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[23]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CloseRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CloseRequest.DiscardUnknown(m)
+
+func (x *CloseRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_CloseRequest proto.InternalMessageInfo
+func (*CloseRequest) ProtoMessage() {}
+
+func (x *CloseRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
+}
 
-const Default_CloseRequest_SendOffset int64 = -1
+// Deprecated: Use CloseRequest.ProtoReflect.Descriptor instead.
+func (*CloseRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{23}
+}
 
-func (m *CloseRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *CloseRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *CloseRequest) GetSendOffset() int64 {
-	if m != nil && m.SendOffset != nil {
-		return *m.SendOffset
+func (x *CloseRequest) GetSendOffset() int64 {
+	if x != nil && x.SendOffset != nil {
+		return *x.SendOffset
 	}
-	return Default_CloseRequest_SendOffset
+	return 0
 }
 
 type CloseReply struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *CloseReply) Reset()         { *m = CloseReply{} }
-func (m *CloseReply) String() string { return proto.CompactTextString(m) }
-func (*CloseReply) ProtoMessage()    {}
-func (*CloseReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{24}
-}
-func (m *CloseReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CloseReply.Unmarshal(m, b)
-}
-func (m *CloseReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CloseReply.Marshal(b, m, deterministic)
-}
-func (dst *CloseReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CloseReply.Merge(dst, src)
-}
-func (m *CloseReply) XXX_Size() int {
-	return xxx_messageInfo_CloseReply.Size(m)
+func (x *CloseReply) Reset() {
+	*x = CloseReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[24]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CloseReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_CloseReply.DiscardUnknown(m)
+
+func (x *CloseReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_CloseReply proto.InternalMessageInfo
+func (*CloseReply) ProtoMessage() {}
 
-type SendRequest struct {
-	SocketDescriptor     *string      `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	Data                 []byte       `protobuf:"bytes,2,req,name=data" json:"data,omitempty"`
-	StreamOffset         *int64       `protobuf:"varint,3,req,name=stream_offset,json=streamOffset" json:"stream_offset,omitempty"`
-	Flags                *int32       `protobuf:"varint,4,opt,name=flags,def=0" json:"flags,omitempty"`
-	SendTo               *AddressPort `protobuf:"bytes,5,opt,name=send_to,json=sendTo" json:"send_to,omitempty"`
-	TimeoutSeconds       *float64     `protobuf:"fixed64,6,opt,name=timeout_seconds,json=timeoutSeconds,def=-1" json:"timeout_seconds,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *SendRequest) Reset()         { *m = SendRequest{} }
-func (m *SendRequest) String() string { return proto.CompactTextString(m) }
-func (*SendRequest) ProtoMessage()    {}
-func (*SendRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{25}
-}
-func (m *SendRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SendRequest.Unmarshal(m, b)
+func (x *CloseReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
-func (m *SendRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SendRequest.Marshal(b, m, deterministic)
+
+// Deprecated: Use CloseReply.ProtoReflect.Descriptor instead.
+func (*CloseReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{24}
 }
-func (dst *SendRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SendRequest.Merge(dst, src)
+
+type SendRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SocketDescriptor string       `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	Data             []byte       `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	StreamOffset     int64        `protobuf:"varint,3,opt,name=stream_offset,json=streamOffset,proto3" json:"stream_offset,omitempty"`
+	Flags            *int32       `protobuf:"varint,4,opt,name=flags,proto3,oneof" json:"flags,omitempty"`
+	SendTo           *AddressPort `protobuf:"bytes,5,opt,name=send_to,json=sendTo,proto3,oneof" json:"send_to,omitempty"`
+	TimeoutSeconds   *float64     `protobuf:"fixed64,6,opt,name=timeout_seconds,json=timeoutSeconds,proto3,oneof" json:"timeout_seconds,omitempty"`
 }
-func (m *SendRequest) XXX_Size() int {
-	return xxx_messageInfo_SendRequest.Size(m)
+
+func (x *SendRequest) Reset() {
+	*x = SendRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[25]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SendRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SendRequest.DiscardUnknown(m)
+
+func (x *SendRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_SendRequest proto.InternalMessageInfo
+func (*SendRequest) ProtoMessage() {}
+
+func (x *SendRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
+}
 
-const Default_SendRequest_Flags int32 = 0
-const Default_SendRequest_TimeoutSeconds float64 = -1
+// Deprecated: Use SendRequest.ProtoReflect.Descriptor instead.
+func (*SendRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{25}
+}
 
-func (m *SendRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *SendRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *SendRequest) GetData() []byte {
-	if m != nil {
-		return m.Data
+func (x *SendRequest) GetData() []byte {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *SendRequest) GetStreamOffset() int64 {
-	if m != nil && m.StreamOffset != nil {
-		return *m.StreamOffset
+func (x *SendRequest) GetStreamOffset() int64 {
+	if x != nil {
+		return x.StreamOffset
 	}
 	return 0
 }
 
-func (m *SendRequest) GetFlags() int32 {
-	if m != nil && m.Flags != nil {
-		return *m.Flags
+func (x *SendRequest) GetFlags() int32 {
+	if x != nil && x.Flags != nil {
+		return *x.Flags
 	}
-	return Default_SendRequest_Flags
+	return 0
 }
 
-func (m *SendRequest) GetSendTo() *AddressPort {
-	if m != nil {
-		return m.SendTo
+func (x *SendRequest) GetSendTo() *AddressPort {
+	if x != nil {
+		return x.SendTo
 	}
 	return nil
 }
 
-func (m *SendRequest) GetTimeoutSeconds() float64 {
-	if m != nil && m.TimeoutSeconds != nil {
-		return *m.TimeoutSeconds
+func (x *SendRequest) GetTimeoutSeconds() float64 {
+	if x != nil && x.TimeoutSeconds != nil {
+		return *x.TimeoutSeconds
 	}
-	return Default_SendRequest_TimeoutSeconds
+	return 0
 }
 
 type SendReply struct {
-	DataSent             *int32   `protobuf:"varint,1,opt,name=data_sent,json=dataSent" json:"data_sent,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *SendReply) Reset()         { *m = SendReply{} }
-func (m *SendReply) String() string { return proto.CompactTextString(m) }
-func (*SendReply) ProtoMessage()    {}
-func (*SendReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{26}
-}
-func (m *SendReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SendReply.Unmarshal(m, b)
-}
-func (m *SendReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SendReply.Marshal(b, m, deterministic)
+	DataSent *int32 `protobuf:"varint,1,opt,name=data_sent,json=dataSent,proto3,oneof" json:"data_sent,omitempty"`
 }
-func (dst *SendReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SendReply.Merge(dst, src)
+
+func (x *SendReply) Reset() {
+	*x = SendReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[26]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SendReply) XXX_Size() int {
-	return xxx_messageInfo_SendReply.Size(m)
+
+func (x *SendReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SendReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_SendReply.DiscardUnknown(m)
+
+func (*SendReply) ProtoMessage() {}
+
+func (x *SendReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_SendReply proto.InternalMessageInfo
+// Deprecated: Use SendReply.ProtoReflect.Descriptor instead.
+func (*SendReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{26}
+}
 
-func (m *SendReply) GetDataSent() int32 {
-	if m != nil && m.DataSent != nil {
-		return *m.DataSent
+func (x *SendReply) GetDataSent() int32 {
+	if x != nil && x.DataSent != nil {
+		return *x.DataSent
 	}
 	return 0
 }
 
 type ReceiveRequest struct {
-	SocketDescriptor     *string  `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	DataSize             *int32   `protobuf:"varint,2,req,name=data_size,json=dataSize" json:"data_size,omitempty"`
-	Flags                *int32   `protobuf:"varint,3,opt,name=flags,def=0" json:"flags,omitempty"`
-	TimeoutSeconds       *float64 `protobuf:"fixed64,5,opt,name=timeout_seconds,json=timeoutSeconds,def=-1" json:"timeout_seconds,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *ReceiveRequest) Reset()         { *m = ReceiveRequest{} }
-func (m *ReceiveRequest) String() string { return proto.CompactTextString(m) }
-func (*ReceiveRequest) ProtoMessage()    {}
-func (*ReceiveRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{27}
-}
-func (m *ReceiveRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ReceiveRequest.Unmarshal(m, b)
-}
-func (m *ReceiveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ReceiveRequest.Marshal(b, m, deterministic)
-}
-func (dst *ReceiveRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ReceiveRequest.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SocketDescriptor string   `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	DataSize         int32    `protobuf:"varint,2,opt,name=data_size,json=dataSize,proto3" json:"data_size,omitempty"`
+	Flags            *int32   `protobuf:"varint,3,opt,name=flags,proto3,oneof" json:"flags,omitempty"`
+	TimeoutSeconds   *float64 `protobuf:"fixed64,5,opt,name=timeout_seconds,json=timeoutSeconds,proto3,oneof" json:"timeout_seconds,omitempty"`
 }
-func (m *ReceiveRequest) XXX_Size() int {
-	return xxx_messageInfo_ReceiveRequest.Size(m)
+
+func (x *ReceiveRequest) Reset() {
+	*x = ReceiveRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[27]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ReceiveRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ReceiveRequest.DiscardUnknown(m)
+
+func (x *ReceiveRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_ReceiveRequest proto.InternalMessageInfo
+func (*ReceiveRequest) ProtoMessage() {}
 
-const Default_ReceiveRequest_Flags int32 = 0
-const Default_ReceiveRequest_TimeoutSeconds float64 = -1
+func (x *ReceiveRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
+}
 
-func (m *ReceiveRequest) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+// Deprecated: Use ReceiveRequest.ProtoReflect.Descriptor instead.
+func (*ReceiveRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *ReceiveRequest) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *ReceiveRequest) GetDataSize() int32 {
-	if m != nil && m.DataSize != nil {
-		return *m.DataSize
+func (x *ReceiveRequest) GetDataSize() int32 {
+	if x != nil {
+		return x.DataSize
 	}
 	return 0
 }
 
-func (m *ReceiveRequest) GetFlags() int32 {
-	if m != nil && m.Flags != nil {
-		return *m.Flags
+func (x *ReceiveRequest) GetFlags() int32 {
+	if x != nil && x.Flags != nil {
+		return *x.Flags
 	}
-	return Default_ReceiveRequest_Flags
+	return 0
 }
 
-func (m *ReceiveRequest) GetTimeoutSeconds() float64 {
-	if m != nil && m.TimeoutSeconds != nil {
-		return *m.TimeoutSeconds
+func (x *ReceiveRequest) GetTimeoutSeconds() float64 {
+	if x != nil && x.TimeoutSeconds != nil {
+		return *x.TimeoutSeconds
 	}
-	return Default_ReceiveRequest_TimeoutSeconds
+	return 0
 }
 
 type ReceiveReply struct {
-	StreamOffset         *int64       `protobuf:"varint,2,opt,name=stream_offset,json=streamOffset" json:"stream_offset,omitempty"`
-	Data                 []byte       `protobuf:"bytes,3,opt,name=data" json:"data,omitempty"`
-	ReceivedFrom         *AddressPort `protobuf:"bytes,4,opt,name=received_from,json=receivedFrom" json:"received_from,omitempty"`
-	BufferSize           *int32       `protobuf:"varint,5,opt,name=buffer_size,json=bufferSize" json:"buffer_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *ReceiveReply) Reset()         { *m = ReceiveReply{} }
-func (m *ReceiveReply) String() string { return proto.CompactTextString(m) }
-func (*ReceiveReply) ProtoMessage()    {}
-func (*ReceiveReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{28}
-}
-func (m *ReceiveReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ReceiveReply.Unmarshal(m, b)
-}
-func (m *ReceiveReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ReceiveReply.Marshal(b, m, deterministic)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	StreamOffset *int64       `protobuf:"varint,2,opt,name=stream_offset,json=streamOffset,proto3,oneof" json:"stream_offset,omitempty"`
+	Data         []byte       `protobuf:"bytes,3,opt,name=data,proto3,oneof" json:"data,omitempty"`
+	ReceivedFrom *AddressPort `protobuf:"bytes,4,opt,name=received_from,json=receivedFrom,proto3,oneof" json:"received_from,omitempty"`
+	BufferSize   *int32       `protobuf:"varint,5,opt,name=buffer_size,json=bufferSize,proto3,oneof" json:"buffer_size,omitempty"`
 }
-func (dst *ReceiveReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ReceiveReply.Merge(dst, src)
+
+func (x *ReceiveReply) Reset() {
+	*x = ReceiveReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[28]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ReceiveReply) XXX_Size() int {
-	return xxx_messageInfo_ReceiveReply.Size(m)
+
+func (x *ReceiveReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ReceiveReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_ReceiveReply.DiscardUnknown(m)
+
+func (*ReceiveReply) ProtoMessage() {}
+
+func (x *ReceiveReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_ReceiveReply proto.InternalMessageInfo
+// Deprecated: Use ReceiveReply.ProtoReflect.Descriptor instead.
+func (*ReceiveReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{28}
+}
 
-func (m *ReceiveReply) GetStreamOffset() int64 {
-	if m != nil && m.StreamOffset != nil {
-		return *m.StreamOffset
+func (x *ReceiveReply) GetStreamOffset() int64 {
+	if x != nil && x.StreamOffset != nil {
+		return *x.StreamOffset
 	}
 	return 0
 }
 
-func (m *ReceiveReply) GetData() []byte {
-	if m != nil {
-		return m.Data
+func (x *ReceiveReply) GetData() []byte {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *ReceiveReply) GetReceivedFrom() *AddressPort {
-	if m != nil {
-		return m.ReceivedFrom
+func (x *ReceiveReply) GetReceivedFrom() *AddressPort {
+	if x != nil {
+		return x.ReceivedFrom
 	}
 	return nil
 }
 
-func (m *ReceiveReply) GetBufferSize() int32 {
-	if m != nil && m.BufferSize != nil {
-		return *m.BufferSize
+func (x *ReceiveReply) GetBufferSize() int32 {
+	if x != nil && x.BufferSize != nil {
+		return *x.BufferSize
 	}
 	return 0
 }
 
 type PollEvent struct {
-	SocketDescriptor     *string  `protobuf:"bytes,1,req,name=socket_descriptor,json=socketDescriptor" json:"socket_descriptor,omitempty"`
-	RequestedEvents      *int32   `protobuf:"varint,2,req,name=requested_events,json=requestedEvents" json:"requested_events,omitempty"`
-	ObservedEvents       *int32   `protobuf:"varint,3,req,name=observed_events,json=observedEvents" json:"observed_events,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *PollEvent) Reset()         { *m = PollEvent{} }
-func (m *PollEvent) String() string { return proto.CompactTextString(m) }
-func (*PollEvent) ProtoMessage()    {}
-func (*PollEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{29}
-}
-func (m *PollEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PollEvent.Unmarshal(m, b)
+	SocketDescriptor string `protobuf:"bytes,1,opt,name=socket_descriptor,json=socketDescriptor,proto3" json:"socket_descriptor,omitempty"`
+	RequestedEvents  int32  `protobuf:"varint,2,opt,name=requested_events,json=requestedEvents,proto3" json:"requested_events,omitempty"`
+	ObservedEvents   int32  `protobuf:"varint,3,opt,name=observed_events,json=observedEvents,proto3" json:"observed_events,omitempty"`
 }
-func (m *PollEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PollEvent.Marshal(b, m, deterministic)
-}
-func (dst *PollEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PollEvent.Merge(dst, src)
+
+func (x *PollEvent) Reset() {
+	*x = PollEvent{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[29]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PollEvent) XXX_Size() int {
-	return xxx_messageInfo_PollEvent.Size(m)
+
+func (x *PollEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *PollEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_PollEvent.DiscardUnknown(m)
+
+func (*PollEvent) ProtoMessage() {}
+
+func (x *PollEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_PollEvent proto.InternalMessageInfo
+// Deprecated: Use PollEvent.ProtoReflect.Descriptor instead.
+func (*PollEvent) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{29}
+}
 
-func (m *PollEvent) GetSocketDescriptor() string {
-	if m != nil && m.SocketDescriptor != nil {
-		return *m.SocketDescriptor
+func (x *PollEvent) GetSocketDescriptor() string {
+	if x != nil {
+		return x.SocketDescriptor
 	}
 	return ""
 }
 
-func (m *PollEvent) GetRequestedEvents() int32 {
-	if m != nil && m.RequestedEvents != nil {
-		return *m.RequestedEvents
+func (x *PollEvent) GetRequestedEvents() int32 {
+	if x != nil {
+		return x.RequestedEvents
 	}
 	return 0
 }
 
-func (m *PollEvent) GetObservedEvents() int32 {
-	if m != nil && m.ObservedEvents != nil {
-		return *m.ObservedEvents
+func (x *PollEvent) GetObservedEvents() int32 {
+	if x != nil {
+		return x.ObservedEvents
 	}
 	return 0
 }
 
 type PollRequest struct {
-	Events               []*PollEvent `protobuf:"bytes,1,rep,name=events" json:"events,omitempty"`
-	TimeoutSeconds       *float64     `protobuf:"fixed64,2,opt,name=timeout_seconds,json=timeoutSeconds,def=-1" json:"timeout_seconds,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *PollRequest) Reset()         { *m = PollRequest{} }
-func (m *PollRequest) String() string { return proto.CompactTextString(m) }
-func (*PollRequest) ProtoMessage()    {}
-func (*PollRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{30}
-}
-func (m *PollRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PollRequest.Unmarshal(m, b)
-}
-func (m *PollRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PollRequest.Marshal(b, m, deterministic)
-}
-func (dst *PollRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PollRequest.Merge(dst, src)
+	Events         []*PollEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
+	TimeoutSeconds *float64     `protobuf:"fixed64,2,opt,name=timeout_seconds,json=timeoutSeconds,proto3,oneof" json:"timeout_seconds,omitempty"`
 }
-func (m *PollRequest) XXX_Size() int {
-	return xxx_messageInfo_PollRequest.Size(m)
+
+func (x *PollRequest) Reset() {
+	*x = PollRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[30]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PollRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_PollRequest.DiscardUnknown(m)
+
+func (x *PollRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_PollRequest proto.InternalMessageInfo
+func (*PollRequest) ProtoMessage() {}
 
-const Default_PollRequest_TimeoutSeconds float64 = -1
+func (x *PollRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
+}
 
-func (m *PollRequest) GetEvents() []*PollEvent {
-	if m != nil {
-		return m.Events
+// Deprecated: Use PollRequest.ProtoReflect.Descriptor instead.
+func (*PollRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *PollRequest) GetEvents() []*PollEvent {
+	if x != nil {
+		return x.Events
 	}
 	return nil
 }
 
-func (m *PollRequest) GetTimeoutSeconds() float64 {
-	if m != nil && m.TimeoutSeconds != nil {
-		return *m.TimeoutSeconds
+func (x *PollRequest) GetTimeoutSeconds() float64 {
+	if x != nil && x.TimeoutSeconds != nil {
+		return *x.TimeoutSeconds
 	}
-	return Default_PollRequest_TimeoutSeconds
+	return 0
 }
 
 type PollReply struct {
-	Events               []*PollEvent `protobuf:"bytes,2,rep,name=events" json:"events,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *PollReply) Reset()         { *m = PollReply{} }
-func (m *PollReply) String() string { return proto.CompactTextString(m) }
-func (*PollReply) ProtoMessage()    {}
-func (*PollReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{31}
-}
-func (m *PollReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PollReply.Unmarshal(m, b)
+	Events []*PollEvent `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"`
 }
-func (m *PollReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PollReply.Marshal(b, m, deterministic)
-}
-func (dst *PollReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PollReply.Merge(dst, src)
+
+func (x *PollReply) Reset() {
+	*x = PollReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[31]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PollReply) XXX_Size() int {
-	return xxx_messageInfo_PollReply.Size(m)
+
+func (x *PollReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *PollReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_PollReply.DiscardUnknown(m)
+
+func (*PollReply) ProtoMessage() {}
+
+func (x *PollReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_PollReply proto.InternalMessageInfo
+// Deprecated: Use PollReply.ProtoReflect.Descriptor instead.
+func (*PollReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{31}
+}
 
-func (m *PollReply) GetEvents() []*PollEvent {
-	if m != nil {
-		return m.Events
+func (x *PollReply) GetEvents() []*PollEvent {
+	if x != nil {
+		return x.Events
 	}
 	return nil
 }
 
 type ResolveRequest struct {
-	Name                 *string                            `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	AddressFamilies      []CreateSocketRequest_SocketFamily `protobuf:"varint,2,rep,name=address_families,json=addressFamilies,enum=appengine.CreateSocketRequest_SocketFamily" json:"address_families,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
-	XXX_unrecognized     []byte                             `json:"-"`
-	XXX_sizecache        int32                              `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ResolveRequest) Reset()         { *m = ResolveRequest{} }
-func (m *ResolveRequest) String() string { return proto.CompactTextString(m) }
-func (*ResolveRequest) ProtoMessage()    {}
-func (*ResolveRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{32}
-}
-func (m *ResolveRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ResolveRequest.Unmarshal(m, b)
+	Name            string                             `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	AddressFamilies []CreateSocketRequest_SocketFamily `protobuf:"varint,2,rep,packed,name=address_families,json=addressFamilies,proto3,enum=appengine.CreateSocketRequest_SocketFamily" json:"address_families,omitempty"`
 }
-func (m *ResolveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ResolveRequest.Marshal(b, m, deterministic)
-}
-func (dst *ResolveRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ResolveRequest.Merge(dst, src)
+
+func (x *ResolveRequest) Reset() {
+	*x = ResolveRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[32]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ResolveRequest) XXX_Size() int {
-	return xxx_messageInfo_ResolveRequest.Size(m)
+
+func (x *ResolveRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ResolveRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ResolveRequest.DiscardUnknown(m)
+
+func (*ResolveRequest) ProtoMessage() {}
+
+func (x *ResolveRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_ResolveRequest proto.InternalMessageInfo
+// Deprecated: Use ResolveRequest.ProtoReflect.Descriptor instead.
+func (*ResolveRequest) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{32}
+}
 
-func (m *ResolveRequest) GetName() string {
-	if m != nil && m.Name != nil {
-		return *m.Name
+func (x *ResolveRequest) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *ResolveRequest) GetAddressFamilies() []CreateSocketRequest_SocketFamily {
-	if m != nil {
-		return m.AddressFamilies
+func (x *ResolveRequest) GetAddressFamilies() []CreateSocketRequest_SocketFamily {
+	if x != nil {
+		return x.AddressFamilies
 	}
 	return nil
 }
 
 type ResolveReply struct {
-	PackedAddress        [][]byte `protobuf:"bytes,2,rep,name=packed_address,json=packedAddress" json:"packed_address,omitempty"`
-	CanonicalName        *string  `protobuf:"bytes,3,opt,name=canonical_name,json=canonicalName" json:"canonical_name,omitempty"`
-	Aliases              []string `protobuf:"bytes,4,rep,name=aliases" json:"aliases,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *ResolveReply) Reset()         { *m = ResolveReply{} }
-func (m *ResolveReply) String() string { return proto.CompactTextString(m) }
-func (*ResolveReply) ProtoMessage()    {}
-func (*ResolveReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_socket_service_b5f8f233dc327808, []int{33}
-}
-func (m *ResolveReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ResolveReply.Unmarshal(m, b)
+	PackedAddress [][]byte `protobuf:"bytes,2,rep,name=packed_address,json=packedAddress,proto3" json:"packed_address,omitempty"`
+	CanonicalName *string  `protobuf:"bytes,3,opt,name=canonical_name,json=canonicalName,proto3,oneof" json:"canonical_name,omitempty"`
+	Aliases       []string `protobuf:"bytes,4,rep,name=aliases,proto3" json:"aliases,omitempty"`
 }
-func (m *ResolveReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ResolveReply.Marshal(b, m, deterministic)
-}
-func (dst *ResolveReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ResolveReply.Merge(dst, src)
+
+func (x *ResolveReply) Reset() {
+	*x = ResolveReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_socket_service_proto_msgTypes[33]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *ResolveReply) XXX_Size() int {
-	return xxx_messageInfo_ResolveReply.Size(m)
+
+func (x *ResolveReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *ResolveReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_ResolveReply.DiscardUnknown(m)
+
+func (*ResolveReply) ProtoMessage() {}
+
+func (x *ResolveReply) ProtoReflect() protoreflect.Message {
+	mi := &file_socket_service_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)
 }
 
-var xxx_messageInfo_ResolveReply proto.InternalMessageInfo
+// Deprecated: Use ResolveReply.ProtoReflect.Descriptor instead.
+func (*ResolveReply) Descriptor() ([]byte, []int) {
+	return file_socket_service_proto_rawDescGZIP(), []int{33}
+}
 
-func (m *ResolveReply) GetPackedAddress() [][]byte {
-	if m != nil {
-		return m.PackedAddress
+func (x *ResolveReply) GetPackedAddress() [][]byte {
+	if x != nil {
+		return x.PackedAddress
 	}
 	return nil
 }
 
-func (m *ResolveReply) GetCanonicalName() string {
-	if m != nil && m.CanonicalName != nil {
-		return *m.CanonicalName
+func (x *ResolveReply) GetCanonicalName() string {
+	if x != nil && x.CanonicalName != nil {
+		return *x.CanonicalName
 	}
 	return ""
 }
 
-func (m *ResolveReply) GetAliases() []string {
-	if m != nil {
-		return m.Aliases
+func (x *ResolveReply) GetAliases() []string {
+	if x != nil {
+		return x.Aliases
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*RemoteSocketServiceError)(nil), "appengine.RemoteSocketServiceError")
-	proto.RegisterType((*AddressPort)(nil), "appengine.AddressPort")
-	proto.RegisterType((*CreateSocketRequest)(nil), "appengine.CreateSocketRequest")
-	proto.RegisterType((*CreateSocketReply)(nil), "appengine.CreateSocketReply")
-	proto.RegisterType((*BindRequest)(nil), "appengine.BindRequest")
-	proto.RegisterType((*BindReply)(nil), "appengine.BindReply")
-	proto.RegisterType((*GetSocketNameRequest)(nil), "appengine.GetSocketNameRequest")
-	proto.RegisterType((*GetSocketNameReply)(nil), "appengine.GetSocketNameReply")
-	proto.RegisterType((*GetPeerNameRequest)(nil), "appengine.GetPeerNameRequest")
-	proto.RegisterType((*GetPeerNameReply)(nil), "appengine.GetPeerNameReply")
-	proto.RegisterType((*SocketOption)(nil), "appengine.SocketOption")
-	proto.RegisterType((*SetSocketOptionsRequest)(nil), "appengine.SetSocketOptionsRequest")
-	proto.RegisterType((*SetSocketOptionsReply)(nil), "appengine.SetSocketOptionsReply")
-	proto.RegisterType((*GetSocketOptionsRequest)(nil), "appengine.GetSocketOptionsRequest")
-	proto.RegisterType((*GetSocketOptionsReply)(nil), "appengine.GetSocketOptionsReply")
-	proto.RegisterType((*ConnectRequest)(nil), "appengine.ConnectRequest")
-	proto.RegisterType((*ConnectReply)(nil), "appengine.ConnectReply")
-	proto.RegisterType((*ListenRequest)(nil), "appengine.ListenRequest")
-	proto.RegisterType((*ListenReply)(nil), "appengine.ListenReply")
-	proto.RegisterType((*AcceptRequest)(nil), "appengine.AcceptRequest")
-	proto.RegisterType((*AcceptReply)(nil), "appengine.AcceptReply")
-	proto.RegisterType((*ShutDownRequest)(nil), "appengine.ShutDownRequest")
-	proto.RegisterType((*ShutDownReply)(nil), "appengine.ShutDownReply")
-	proto.RegisterType((*CloseRequest)(nil), "appengine.CloseRequest")
-	proto.RegisterType((*CloseReply)(nil), "appengine.CloseReply")
-	proto.RegisterType((*SendRequest)(nil), "appengine.SendRequest")
-	proto.RegisterType((*SendReply)(nil), "appengine.SendReply")
-	proto.RegisterType((*ReceiveRequest)(nil), "appengine.ReceiveRequest")
-	proto.RegisterType((*ReceiveReply)(nil), "appengine.ReceiveReply")
-	proto.RegisterType((*PollEvent)(nil), "appengine.PollEvent")
-	proto.RegisterType((*PollRequest)(nil), "appengine.PollRequest")
-	proto.RegisterType((*PollReply)(nil), "appengine.PollReply")
-	proto.RegisterType((*ResolveRequest)(nil), "appengine.ResolveRequest")
-	proto.RegisterType((*ResolveReply)(nil), "appengine.ResolveReply")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/socket/socket_service.proto", fileDescriptor_socket_service_b5f8f233dc327808)
-}
-
-var fileDescriptor_socket_service_b5f8f233dc327808 = []byte{
-	// 3088 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x5f, 0x77, 0xe3, 0xc6,
-	0x75, 0x37, 0x48, 0xfd, 0xe3, 0x90, 0x94, 0xee, 0x62, 0xa5, 0x5d, 0x25, 0x6e, 0x12, 0x05, 0x8e,
-	0x1b, 0x25, 0x8e, 0x77, 0x6d, 0x39, 0x4d, 0x9b, 0xa4, 0x49, 0x16, 0x04, 0x86, 0x24, 0x4c, 0x00,
-	0x03, 0xcd, 0x0c, 0x25, 0xd1, 0x6d, 0x8a, 0xd0, 0x22, 0xa4, 0x65, 0x4c, 0x11, 0x0c, 0xc9, 0xdd,
-	0xf5, 0xba, 0x69, 0xaa, 0xfe, 0x39, 0xfd, 0x12, 0x7d, 0xe8, 0x73, 0x3f, 0x43, 0x4f, 0x4f, 0x5f,
-	0xfa, 0xec, 0xc7, 0x7e, 0x84, 0x9e, 0xbe, 0xb4, 0x9f, 0xa1, 0x67, 0x06, 0xe0, 0x60, 0xc8, 0xd5,
-	0xae, 0x77, 0x75, 0x72, 0x4e, 0x9e, 0xa4, 0xfb, 0xbb, 0x77, 0xee, 0xff, 0x99, 0xb9, 0x03, 0xa2,
-	0x47, 0x97, 0x69, 0x7a, 0x39, 0x4a, 0x1e, 0x5c, 0xa6, 0xa3, 0xfe, 0xf8, 0xf2, 0x41, 0x3a, 0xbd,
-	0x7c, 0xd8, 0x9f, 0x4c, 0x92, 0xf1, 0xe5, 0x70, 0x9c, 0x3c, 0x1c, 0x8e, 0xe7, 0xc9, 0x74, 0xdc,
-	0x1f, 0x3d, 0x9c, 0xa5, 0xe7, 0x9f, 0x25, 0xf3, 0xfc, 0x4f, 0x3c, 0x4b, 0xa6, 0x4f, 0x87, 0xe7,
-	0xc9, 0x83, 0xc9, 0x34, 0x9d, 0xa7, 0x66, 0x45, 0xc9, 0x5b, 0xff, 0xbc, 0x8b, 0xf6, 0x69, 0x72,
-	0x95, 0xce, 0x13, 0x26, 0x25, 0x59, 0x26, 0x88, 0xa7, 0xd3, 0x74, 0x6a, 0x7e, 0x07, 0xd5, 0x66,
-	0xcf, 0x67, 0xf3, 0xe4, 0x2a, 0x4e, 0x04, 0xbd, 0x6f, 0x1c, 0x18, 0x87, 0xeb, 0x3f, 0x31, 0x3e,
-	0xa0, 0xd5, 0x0c, 0xce, 0xa4, 0xbe, 0x8d, 0x6a, 0x92, 0x1d, 0x0f, 0x92, 0x79, 0x7f, 0x38, 0xda,
-	0x2f, 0x1d, 0x18, 0x87, 0x15, 0x5a, 0x95, 0x98, 0x2b, 0x21, 0xeb, 0x73, 0x54, 0x91, 0xb2, 0x4e,
-	0x3a, 0x48, 0x4c, 0x40, 0x35, 0xd6, 0x63, 0x1c, 0x07, 0x31, 0xa6, 0x94, 0x50, 0x30, 0xcc, 0x3a,
-	0xaa, 0xb4, 0x6c, 0x2f, 0x27, 0x4b, 0x66, 0x15, 0x6d, 0x36, 0x6d, 0xcf, 0xef, 0x52, 0x0c, 0x6b,
-	0xe6, 0x1e, 0xba, 0x13, 0x61, 0x1a, 0x78, 0x8c, 0x79, 0x24, 0x8c, 0x5d, 0x1c, 0x7a, 0xd8, 0x85,
-	0x75, 0xf3, 0x2e, 0xda, 0xf1, 0xc2, 0x13, 0xdb, 0xf7, 0xdc, 0x98, 0xe2, 0xe3, 0x2e, 0x66, 0x1c,
-	0x36, 0xcc, 0x3b, 0xa8, 0xce, 0x88, 0xd3, 0xc1, 0x3c, 0x76, 0x7c, 0xc2, 0xb0, 0x0b, 0x9b, 0xd6,
-	0xbf, 0x99, 0xa8, 0xca, 0x34, 0x67, 0x77, 0x50, 0x95, 0xf5, 0x58, 0xcc, 0xba, 0x8e, 0x83, 0x19,
-	0x83, 0xb7, 0x84, 0x6d, 0x01, 0x60, 0x61, 0x04, 0x0c, 0x73, 0x1b, 0x21, 0x49, 0x86, 0x04, 0x87,
-	0x1c, 0x4a, 0x8a, 0xcd, 0xa8, 0xd3, 0x86, 0xb2, 0x22, 0xbd, 0x90, 0x53, 0x58, 0x13, 0x9e, 0x66,
-	0x24, 0x81, 0x75, 0xc5, 0x0b, 0xcf, 0x3c, 0x02, 0x1b, 0x8a, 0x3c, 0x6a, 0x78, 0x2d, 0xd8, 0x5c,
-	0x18, 0x16, 0x8a, 0xcf, 0xb0, 0x03, 0x5b, 0x8a, 0xdf, 0xb0, 0xdd, 0x26, 0x54, 0x94, 0x61, 0xa7,
-	0xed, 0xf9, 0x2e, 0x20, 0x45, 0xdb, 0x2d, 0xdb, 0x0b, 0xa1, 0x2a, 0x02, 0x96, 0xf4, 0x29, 0xe9,
-	0xfa, 0x6e, 0xc3, 0x27, 0x4e, 0x07, 0xaa, 0x9a, 0xb7, 0x01, 0x0e, 0xa0, 0x56, 0x2c, 0x12, 0xd1,
-	0x41, 0x5d, 0xd1, 0x4d, 0xbb, 0xeb, 0x73, 0xd8, 0xd6, 0x9c, 0xe0, 0x0d, 0xbf, 0x03, 0x3b, 0x85,
-	0x13, 0x5d, 0xd6, 0x03, 0x50, 0xf2, 0xf8, 0xcc, 0x63, 0x1c, 0xee, 0x28, 0xf6, 0x99, 0x8b, 0x4f,
-	0xc0, 0xd4, 0xcc, 0x09, 0xfa, 0xae, 0xae, 0xce, 0xf5, 0x28, 0xec, 0x2a, 0x01, 0x8f, 0x09, 0x7a,
-	0xaf, 0xa0, 0x45, 0xa9, 0xe0, 0x5e, 0xa1, 0xa0, 0xe9, 0xf9, 0x18, 0xee, 0x2b, 0x3a, 0x90, 0xf4,
-	0xbe, 0x66, 0x80, 0xf3, 0x1e, 0x7c, 0x4d, 0x19, 0xe0, 0x67, 0xbc, 0xc1, 0x7a, 0xf0, 0x75, 0xe5,
-	0x50, 0x53, 0x24, 0xf5, 0x6d, 0x4d, 0x9e, 0x45, 0x0e, 0xfc, 0x91, 0xa2, 0x59, 0xe4, 0x45, 0x18,
-	0xbe, 0xa1, 0xc4, 0x29, 0x69, 0x32, 0xf8, 0x66, 0x61, 0xce, 0xf7, 0xc2, 0x0e, 0x7c, 0xab, 0xa8,
-	0xbd, 0x90, 0x3e, 0x30, 0x6b, 0x68, 0x4b, 0x92, 0x2e, 0x09, 0xe0, 0xdb, 0x4a, 0x98, 0xda, 0x61,
-	0x0b, 0x83, 0xa5, 0x7c, 0x71, 0xb1, 0xed, 0xfa, 0x1d, 0x78, 0x47, 0x76, 0x9b, 0x02, 0x44, 0x3d,
-	0xde, 0x31, 0x77, 0x11, 0x64, 0xfe, 0xd8, 0x01, 0xe6, 0x84, 0xf8, 0x24, 0x6c, 0xc1, 0x77, 0x34,
-	0x2f, 0x7d, 0xa7, 0x03, 0xef, 0xea, 0x5e, 0xf7, 0x18, 0xfc, 0xb1, 0x52, 0x14, 0x12, 0x8e, 0x83,
-	0x88, 0xf7, 0xe0, 0xbb, 0xca, 0x33, 0x9f, 0x90, 0x08, 0x0e, 0xf5, 0x3a, 0xb3, 0x16, 0x7c, 0xbf,
-	0x68, 0x43, 0x97, 0x06, 0xf0, 0x9e, 0xd6, 0x3b, 0x34, 0x6c, 0xc1, 0x0f, 0xf2, 0x1d, 0x16, 0x63,
-	0xff, 0x28, 0x64, 0xbd, 0xd0, 0x81, 0xf7, 0x95, 0x84, 0xff, 0x51, 0xdb, 0xe7, 0xf0, 0x40, 0xa3,
-	0x29, 0xe3, 0xf0, 0xb0, 0xa0, 0x43, 0xa1, 0xe1, 0x03, 0x15, 0x6c, 0x37, 0xb4, 0xb9, 0xd3, 0x86,
-	0x0f, 0x35, 0x0f, 0x1c, 0xe6, 0xc1, 0x51, 0xb1, 0xe0, 0x48, 0x28, 0xfc, 0x48, 0xef, 0x66, 0x0c,
-	0x3f, 0xd4, 0x49, 0x0a, 0x7f, 0xa2, 0xa4, 0xcf, 0x9a, 0x5d, 0xdf, 0x87, 0x1f, 0x69, 0xda, 0xec,
-	0x90, 0xc0, 0x9f, 0x2a, 0x73, 0x42, 0xfc, 0xd8, 0x81, 0x3f, 0xd3, 0x01, 0xe6, 0x73, 0xf8, 0xb1,
-	0x5a, 0xd1, 0x68, 0x92, 0x90, 0xc3, 0x4f, 0xf5, 0x1c, 0x72, 0x0a, 0x7f, 0xae, 0xb5, 0xa2, 0x6b,
-	0x73, 0x1b, 0x7e, 0xa6, 0x3c, 0xe0, 0x5e, 0x80, 0xe1, 0xe7, 0xc5, 0xe6, 0x24, 0x8c, 0xc2, 0x2f,
-	0xb4, 0xe5, 0x21, 0xe6, 0xf0, 0x48, 0xa3, 0xa3, 0x4e, 0x0b, 0x6c, 0xa5, 0x8e, 0xe2, 0x80, 0x70,
-	0x0c, 0x0d, 0x4d, 0xbf, 0xec, 0x1d, 0x47, 0x35, 0x8b, 0xed, 0x9e, 0x80, 0x5b, 0x34, 0x1e, 0x0d,
-	0x42, 0x0e, 0x58, 0x99, 0x73, 0x48, 0x10, 0x40, 0x53, 0xb1, 0x23, 0x4a, 0x38, 0x81, 0x96, 0xaa,
-	0x78, 0xd0, 0xf5, 0xb9, 0xd7, 0x26, 0x11, 0xb4, 0x8b, 0xf6, 0x22, 0xdc, 0x25, 0x1c, 0x3c, 0x3d,
-	0x05, 0xa2, 0xe8, 0x1f, 0xab, 0x45, 0xe4, 0x04, 0xd3, 0xa6, 0x4f, 0x4e, 0xa1, 0xa3, 0x0a, 0x1d,
-	0x12, 0xde, 0x0d, 0xbd, 0x63, 0xf0, 0x8b, 0x3c, 0xd9, 0x6e, 0xd3, 0x85, 0x40, 0x0f, 0xc4, 0x69,
-	0xb7, 0x20, 0x54, 0x80, 0xef, 0x35, 0x6c, 0xc7, 0x01, 0xa2, 0x03, 0x0d, 0xdb, 0x85, 0x48, 0x07,
-	0x98, 0x13, 0xc2, 0xb1, 0x0e, 0x04, 0xf6, 0x19, 0xd0, 0xa2, 0xbf, 0xbc, 0x86, 0x3c, 0xcc, 0x58,
-	0xb1, 0xd1, 0x7d, 0x86, 0x8f, 0x81, 0x2b, 0x09, 0x8a, 0x19, 0xb7, 0x29, 0x87, 0xae, 0x42, 0x18,
-	0xa7, 0x72, 0xbb, 0x9d, 0xa8, 0x35, 0x5d, 0x86, 0x29, 0x83, 0x53, 0x3d, 0x18, 0x71, 0x8a, 0xc3,
-	0x99, 0xda, 0x4e, 0xae, 0xd0, 0xe2, 0xba, 0x94, 0xe2, 0x63, 0xe8, 0x29, 0xb9, 0x80, 0xb5, 0x98,
-	0xf7, 0x09, 0x86, 0x4f, 0x4c, 0x13, 0x6d, 0x17, 0xe9, 0xe5, 0xbd, 0x08, 0xc3, 0x5f, 0xa8, 0xf3,
-	0x32, 0x24, 0x12, 0x25, 0x11, 0x87, 0xbf, 0x34, 0xef, 0xa3, 0xbb, 0x85, 0x60, 0x48, 0x58, 0x37,
-	0x8a, 0x08, 0xe5, 0xf0, 0x4b, 0xc5, 0x10, 0x86, 0x79, 0xc1, 0xf8, 0x2b, 0xa5, 0x9a, 0x44, 0xc2,
-	0xad, 0x6e, 0x14, 0x41, 0xac, 0x1f, 0x7b, 0xac, 0x2b, 0x80, 0x85, 0x9f, 0x51, 0xb3, 0x58, 0xfa,
-	0x2b, 0x85, 0xda, 0x1a, 0xda, 0x57, 0x0a, 0x45, 0x3c, 0x5e, 0xd8, 0x65, 0x18, 0x3e, 0x15, 0x77,
-	0x9c, 0xc2, 0x42, 0xc2, 0xed, 0x13, 0xdb, 0xf3, 0xe1, 0xbc, 0x48, 0x08, 0xe6, 0x2e, 0x39, 0x0d,
-	0x61, 0x50, 0x04, 0x85, 0x79, 0x37, 0xa4, 0xd8, 0x76, 0xda, 0x90, 0x14, 0xc7, 0x07, 0xe6, 0x14,
-	0x33, 0xcc, 0xe1, 0x42, 0x99, 0x76, 0x48, 0x18, 0xda, 0x0d, 0x42, 0x39, 0x76, 0xe1, 0x52, 0x99,
-	0x16, 0x68, 0x26, 0xf9, 0x58, 0x8b, 0xa5, 0xd1, 0x6d, 0x32, 0x18, 0x2a, 0xc0, 0x63, 0x42, 0x0c,
-	0x7e, 0xad, 0x97, 0x45, 0x22, 0x9f, 0x29, 0x83, 0xac, 0xdd, 0xcd, 0x1c, 0x1b, 0x29, 0x83, 0x9c,
-	0x90, 0xc0, 0x0e, 0x7b, 0x14, 0x37, 0x19, 0x5c, 0x29, 0x41, 0xb1, 0x07, 0x5d, 0xd2, 0xe5, 0x30,
-	0x5e, 0xf2, 0x8c, 0xe2, 0x66, 0x57, 0xdc, 0xd2, 0xa9, 0x12, 0x6c, 0x13, 0x96, 0x69, 0x9c, 0x28,
-	0x41, 0x01, 0x2d, 0x62, 0xfd, 0x8d, 0x72, 0xc6, 0xf6, 0x29, 0xb6, 0xdd, 0x1e, 0x4c, 0x55, 0x4a,
-	0xbc, 0x30, 0xa2, 0xa4, 0x45, 0xc5, 0xa5, 0x3e, 0x2b, 0xb6, 0x23, 0xb7, 0x7d, 0x0c, 0xf3, 0xe2,
-	0x38, 0x73, 0x7c, 0x6c, 0x87, 0xf0, 0x44, 0x2f, 0x61, 0x68, 0x07, 0xf0, 0xb4, 0x00, 0xb2, 0xe4,
-	0x3f, 0xd3, 0xae, 0x32, 0x21, 0xf0, 0xb9, 0x72, 0x31, 0x3b, 0x11, 0x3c, 0x02, 0xcf, 0x95, 0x88,
-	0x7b, 0xdc, 0x25, 0x1c, 0xbe, 0xd0, 0xce, 0xf1, 0x00, 0xbb, 0x5e, 0x37, 0x80, 0xbf, 0x56, 0xde,
-	0x65, 0x80, 0x6c, 0xcd, 0xdf, 0x2a, 0x39, 0xc7, 0x0e, 0x1d, 0xec, 0x63, 0x17, 0xfe, 0x46, 0x3b,
-	0x7f, 0x3a, 0xb8, 0x07, 0xbf, 0x53, 0xeb, 0x3a, 0xb8, 0x87, 0xcf, 0x22, 0x8f, 0x62, 0x17, 0xfe,
-	0xd6, 0xdc, 0x2d, 0x40, 0x8a, 0x4f, 0x48, 0x07, 0xbb, 0x70, 0x6d, 0x98, 0x7b, 0x79, 0xa2, 0x24,
-	0xfa, 0x31, 0x76, 0x44, 0xad, 0xff, 0xce, 0x30, 0xef, 0x2e, 0x1a, 0xf7, 0x34, 0xc4, 0x54, 0x5c,
-	0x51, 0xf0, 0xf7, 0x86, 0xb9, 0x9f, 0xb7, 0x79, 0x48, 0x38, 0xc5, 0x8e, 0x38, 0x48, 0xec, 0x86,
-	0x8f, 0xe1, 0x1f, 0x0c, 0x13, 0x16, 0xe7, 0x44, 0xb3, 0xe3, 0xf9, 0x3e, 0xfc, 0xa3, 0xf1, 0xf5,
-	0x12, 0x18, 0xd6, 0x15, 0xaa, 0xda, 0x83, 0xc1, 0x34, 0x99, 0xcd, 0xa2, 0x74, 0x3a, 0x37, 0x4d,
-	0xb4, 0x36, 0x49, 0xa7, 0xf3, 0x7d, 0xe3, 0xa0, 0x74, 0xb8, 0x4e, 0xe5, 0xff, 0xe6, 0xbb, 0x68,
-	0x7b, 0xd2, 0x3f, 0xff, 0x2c, 0x19, 0xc4, 0xfd, 0x4c, 0x52, 0xce, 0x7f, 0x35, 0x5a, 0xcf, 0xd0,
-	0x7c, 0xb9, 0xf9, 0x0e, 0xaa, 0x3f, 0x4e, 0x67, 0xf3, 0x71, 0xff, 0x2a, 0x89, 0x1f, 0x0f, 0xc7,
-	0xf3, 0xfd, 0xb2, 0x9c, 0x12, 0x6b, 0x0b, 0xb0, 0x3d, 0x1c, 0xcf, 0xad, 0x7f, 0x5a, 0x43, 0x77,
-	0x9d, 0x69, 0xd2, 0x5f, 0x0c, 0xa3, 0x34, 0xf9, 0xcd, 0x93, 0x64, 0x36, 0x37, 0x1d, 0xb4, 0x71,
-	0xd1, 0xbf, 0x1a, 0x8e, 0x9e, 0x4b, 0xcb, 0xdb, 0x47, 0xef, 0x3d, 0x50, 0x03, 0xec, 0x83, 0x1b,
-	0xe4, 0x1f, 0x64, 0x54, 0x53, 0x2e, 0xa1, 0xf9, 0x52, 0xd3, 0x43, 0x5b, 0x72, 0xfa, 0x3d, 0x4f,
-	0xc5, 0x88, 0x2a, 0xd4, 0xbc, 0xff, 0x5a, 0x6a, 0xa2, 0x7c, 0x11, 0x55, 0xcb, 0xcd, 0x9f, 0xa3,
-	0xed, 0x7c, 0xae, 0x4e, 0x27, 0xf3, 0x61, 0x3a, 0x9e, 0xed, 0x97, 0x0f, 0xca, 0x87, 0xd5, 0xa3,
-	0xfb, 0x9a, 0xc2, 0x6c, 0x31, 0x91, 0x7c, 0x5a, 0x9f, 0x69, 0xd4, 0xcc, 0x6c, 0xa0, 0x3b, 0x93,
-	0x69, 0xfa, 0xf9, 0xf3, 0x38, 0xf9, 0x3c, 0x9b, 0xd6, 0xe3, 0xe1, 0x64, 0x7f, 0xed, 0xc0, 0x38,
-	0xac, 0x1e, 0xdd, 0xd3, 0x54, 0x68, 0xa9, 0xa7, 0x3b, 0x72, 0x01, 0xce, 0xe5, 0xbd, 0x89, 0x79,
-	0x88, 0xb6, 0x47, 0xc3, 0xd9, 0x3c, 0x19, 0xc7, 0x9f, 0xf6, 0xcf, 0x3f, 0x1b, 0xa5, 0x97, 0xfb,
-	0xeb, 0x8b, 0xe9, 0xbc, 0x9e, 0x31, 0x1a, 0x19, 0x6e, 0x7e, 0x84, 0x2a, 0x53, 0x39, 0xe1, 0x0b,
-	0x2b, 0x1b, 0xaf, 0xb4, 0xb2, 0x95, 0x09, 0x7a, 0x13, 0x73, 0x0f, 0x6d, 0xf4, 0x27, 0x93, 0x78,
-	0x38, 0xd8, 0xaf, 0xc8, 0x42, 0xad, 0xf7, 0x27, 0x13, 0x6f, 0x60, 0x7e, 0x03, 0xa1, 0xc9, 0x34,
-	0xfd, 0x75, 0x72, 0x3e, 0x17, 0x2c, 0x74, 0x60, 0x1c, 0x96, 0x69, 0x25, 0x47, 0xbc, 0x81, 0x65,
-	0xa1, 0x9a, 0x9e, 0x7b, 0x73, 0x0b, 0xad, 0x79, 0xd1, 0xd3, 0x1f, 0x82, 0x91, 0xff, 0xf7, 0x23,
-	0x28, 0x59, 0x16, 0xda, 0x5e, 0x4e, 0xac, 0xb9, 0x89, 0xca, 0xdc, 0x89, 0xc0, 0x10, 0xff, 0x74,
-	0xdd, 0x08, 0x4a, 0xd6, 0x97, 0x06, 0xba, 0xb3, 0x5c, 0x91, 0xc9, 0xe8, 0xb9, 0xf9, 0x1e, 0xba,
-	0x93, 0xa7, 0x7d, 0x90, 0xcc, 0xce, 0xa7, 0xc3, 0xc9, 0x3c, 0x7f, 0x93, 0x54, 0x28, 0x64, 0x0c,
-	0x57, 0xe1, 0xe6, 0xcf, 0xd0, 0xb6, 0x78, 0xf4, 0x24, 0x53, 0xd5, 0x97, 0xe5, 0x57, 0x86, 0x5e,
-	0xcf, 0xa4, 0x17, 0xfd, 0xfa, 0x7b, 0x28, 0xd1, 0xf7, 0x2b, 0x5b, 0xff, 0xb3, 0x09, 0xd7, 0xd7,
-	0xd7, 0xd7, 0x25, 0xeb, 0x77, 0xa8, 0xda, 0x18, 0x8e, 0x07, 0x8b, 0x86, 0x7e, 0x49, 0x24, 0xa5,
-	0x1b, 0x23, 0xb9, 0xd1, 0x15, 0xd1, 0xc1, 0xaf, 0xef, 0x8a, 0x45, 0x50, 0x25, 0xb3, 0x2f, 0xf2,
-	0x78, 0xa3, 0x42, 0xe3, 0x8d, 0x62, 0xb3, 0x1c, 0xb4, 0xdb, 0x4a, 0xe6, 0x59, 0x75, 0xc2, 0xfe,
-	0x55, 0x72, 0x9b, 0xc8, 0xac, 0x33, 0x64, 0xae, 0x28, 0x79, 0xa9, 0x7b, 0xa5, 0x37, 0x73, 0xcf,
-	0x96, 0x9a, 0xa3, 0x24, 0x99, 0xde, 0xda, 0x39, 0x07, 0xc1, 0x92, 0x0a, 0xe1, 0xda, 0x43, 0xb4,
-	0x39, 0x49, 0x92, 0xe9, 0x57, 0x3b, 0xb4, 0x21, 0xc4, 0xbc, 0x89, 0xf5, 0xe5, 0xe6, 0x62, 0x47,
-	0x64, 0x7b, 0xdf, 0xfc, 0x05, 0x5a, 0x1f, 0x25, 0x4f, 0x93, 0x51, 0x7e, 0x92, 0x7d, 0xef, 0x25,
-	0x27, 0xc6, 0x12, 0xe1, 0x8b, 0x05, 0x34, 0x5b, 0x67, 0x3e, 0x42, 0x1b, 0xd9, 0xa1, 0x93, 0x1f,
-	0x62, 0x87, 0xaf, 0xa3, 0x41, 0x46, 0x90, 0xaf, 0x33, 0x77, 0xd1, 0xfa, 0xd3, 0xfe, 0xe8, 0x49,
-	0xb2, 0x5f, 0x3e, 0x28, 0x1d, 0xd6, 0x68, 0x46, 0x58, 0x09, 0xba, 0xf3, 0x82, 0x4d, 0xed, 0x41,
-	0xcd, 0x88, 0x1f, 0x7b, 0x11, 0xbc, 0x25, 0x67, 0x95, 0x02, 0xca, 0xfe, 0x05, 0x43, 0xce, 0x16,
-	0x05, 0x2c, 0xb6, 0xf3, 0xc6, 0x0a, 0x26, 0x76, 0xf6, 0x1d, 0xeb, 0xdf, 0xd7, 0x11, 0xac, 0x7a,
-	0x26, 0x6f, 0xbb, 0x85, 0x60, 0xec, 0xe2, 0x46, 0xb7, 0x05, 0x86, 0x1c, 0xc9, 0x14, 0x48, 0xc5,
-	0x94, 0x28, 0xc6, 0x23, 0x28, 0x2d, 0xa9, 0x8d, 0xe5, 0x95, 0x5a, 0x5e, 0xd6, 0x90, 0x7d, 0x47,
-	0x58, 0x5b, 0xd6, 0xe0, 0x92, 0x90, 0x53, 0xd2, 0xe5, 0x18, 0xd6, 0x97, 0x19, 0x0d, 0x4a, 0x6c,
-	0xd7, 0xb1, 0xe5, 0x07, 0x04, 0x31, 0x74, 0x28, 0x06, 0x0b, 0xdd, 0x46, 0xb7, 0x09, 0x9b, 0xcb,
-	0x28, 0x75, 0x4e, 0x04, 0xba, 0xb5, 0xac, 0xa4, 0x83, 0x71, 0x64, 0xfb, 0xde, 0x09, 0x86, 0xca,
-	0x32, 0x83, 0x90, 0x86, 0x17, 0xfa, 0x5e, 0x88, 0x01, 0x2d, 0xeb, 0xf1, 0xbd, 0xb0, 0x85, 0x29,
-	0xd4, 0xcd, 0x7b, 0xc8, 0x5c, 0xd2, 0x2e, 0x86, 0x25, 0x02, 0xbb, 0xcb, 0x38, 0x0b, 0xdd, 0x0c,
-	0xdf, 0xd3, 0x6a, 0xe2, 0x45, 0x31, 0x27, 0x0c, 0x8c, 0x15, 0x88, 0xfb, 0x50, 0xd2, 0xca, 0xe4,
-	0x45, 0x71, 0x5b, 0x8c, 0x9a, 0x8e, 0x0f, 0xe5, 0x65, 0x98, 0x44, 0xdc, 0x23, 0x21, 0x83, 0x35,
-	0xcd, 0x16, 0x77, 0xa2, 0x58, 0x3c, 0xef, 0x7d, 0xbb, 0x07, 0x86, 0x26, 0x2e, 0xf0, 0xc0, 0x3e,
-	0x63, 0xb8, 0x05, 0x25, 0x2d, 0xdb, 0x02, 0x76, 0x08, 0xed, 0x40, 0x59, 0x0b, 0x5b, 0x80, 0x22,
-	0x21, 0x9e, 0xeb, 0x63, 0x58, 0x33, 0xf7, 0xd1, 0xee, 0x2a, 0x23, 0xe4, 0x27, 0x3e, 0xac, 0xaf,
-	0x98, 0x15, 0x1c, 0x27, 0x14, 0x65, 0x58, 0x36, 0x2b, 0x9e, 0xb0, 0x21, 0x87, 0xcd, 0x15, 0xf1,
-	0x2c, 0x81, 0x47, 0xb0, 0x65, 0xbe, 0x8d, 0xee, 0x6b, 0xb8, 0x8b, 0x9b, 0x98, 0xc6, 0xb6, 0xe3,
-	0xe0, 0x88, 0x43, 0x65, 0x85, 0x79, 0xea, 0x85, 0x2e, 0x39, 0x8d, 0x1d, 0xdf, 0x0e, 0x22, 0x40,
-	0x2b, 0x81, 0x78, 0x61, 0x93, 0x40, 0x75, 0x25, 0x90, 0xe3, 0xae, 0xe7, 0x74, 0x6c, 0xa7, 0x03,
-	0x35, 0x39, 0x11, 0x3d, 0x47, 0xf7, 0xd9, 0xe2, 0xc8, 0xca, 0xaf, 0xf3, 0x5b, 0x1d, 0xea, 0x1f,
-	0xa2, 0xcd, 0xc5, 0xec, 0x50, 0x7a, 0xf5, 0xec, 0xb0, 0x90, 0xb3, 0xee, 0xa3, 0xbd, 0x17, 0x4d,
-	0x4f, 0x46, 0xcf, 0x85, 0x4f, 0xad, 0x3f, 0x90, 0x4f, 0x1f, 0xa3, 0xbd, 0xd6, 0x4d, 0x3e, 0xdd,
-	0x46, 0xd7, 0xbf, 0x18, 0x68, 0xdb, 0x49, 0xc7, 0xe3, 0xe4, 0x7c, 0x7e, 0x2b, 0xf7, 0x97, 0xe6,
-	0x9c, 0x57, 0xdf, 0x8f, 0xc5, 0x9c, 0xf3, 0x1e, 0xda, 0x99, 0x0f, 0xaf, 0x92, 0xf4, 0xc9, 0x3c,
-	0x9e, 0x25, 0xe7, 0xe9, 0x78, 0x90, 0xcd, 0x09, 0xc6, 0x4f, 0x4a, 0xef, 0x7f, 0x48, 0xb7, 0x73,
-	0x16, 0xcb, 0x38, 0xd6, 0x2f, 0x51, 0x4d, 0x39, 0xf8, 0x7b, 0xba, 0x48, 0xf5, 0x21, 0xe1, 0x04,
-	0xd5, 0x7d, 0x39, 0xb9, 0xdd, 0x2a, 0xfc, 0x7d, 0xb4, 0xb9, 0x98, 0x04, 0x4b, 0x72, 0x3e, 0x5f,
-	0x90, 0x56, 0x1d, 0x55, 0x17, 0x7a, 0x45, 0xbb, 0x0c, 0x51, 0xdd, 0x3e, 0x3f, 0x4f, 0x26, 0xb7,
-	0xcb, 0xf2, 0x0d, 0x09, 0x2b, 0xbd, 0x34, 0x61, 0xd7, 0x06, 0xaa, 0x2e, 0x6c, 0x89, 0x84, 0x1d,
-	0xa1, 0xbd, 0x71, 0xf2, 0x2c, 0x7e, 0xd1, 0x5a, 0xf6, 0x66, 0xb8, 0x3b, 0x4e, 0x9e, 0xb1, 0x1b,
-	0x06, 0xb9, 0xbc, 0xac, 0xaf, 0x39, 0xc8, 0x65, 0xd2, 0x39, 0x64, 0xfd, 0x97, 0x81, 0x76, 0xd8,
-	0xe3, 0x27, 0x73, 0x37, 0x7d, 0x76, 0xbb, 0xbc, 0x7e, 0x80, 0xca, 0x8f, 0xd3, 0x67, 0xf9, 0x6d,
-	0xfb, 0x4d, 0xbd, 0x8b, 0x97, 0xb5, 0x3e, 0x68, 0xa7, 0xcf, 0xa8, 0x10, 0x35, 0xbf, 0x85, 0xaa,
-	0xb3, 0x64, 0x3c, 0x88, 0xd3, 0x8b, 0x8b, 0x59, 0x32, 0x97, 0xd7, 0x6c, 0x99, 0x22, 0x01, 0x11,
-	0x89, 0x58, 0x0e, 0x2a, 0xb7, 0xd3, 0x67, 0xfa, 0x45, 0xd6, 0xee, 0xf2, 0x98, 0xba, 0xcb, 0xf7,
-	0xa8, 0xc0, 0x4e, 0xc5, 0x85, 0xa7, 0xdd, 0x1b, 0x99, 0xdc, 0x29, 0x85, 0xb2, 0xb5, 0x83, 0xea,
-	0x85, 0x07, 0xa2, 0xae, 0xbf, 0x42, 0x35, 0x67, 0x94, 0xce, 0x6e, 0x35, 0xed, 0x98, 0xef, 0x2c,
-	0xfb, 0x2c, 0xea, 0x51, 0x96, 0x25, 0xd5, 0xfd, 0xae, 0x21, 0x94, 0x5b, 0x10, 0xf6, 0xfe, 0xcf,
-	0x40, 0x55, 0x96, 0xdc, 0x72, 0xa8, 0xbd, 0x87, 0xd6, 0x06, 0xfd, 0x79, 0x5f, 0xa6, 0xb5, 0xd6,
-	0x28, 0x6d, 0x19, 0x54, 0xd2, 0xe2, 0x9d, 0x38, 0x9b, 0x4f, 0x93, 0xfe, 0xd5, 0x72, 0xf6, 0x6a,
-	0x19, 0x98, 0xf9, 0x61, 0xde, 0x47, 0xeb, 0x17, 0xa3, 0xfe, 0xe5, 0x4c, 0x0e, 0xe4, 0xf2, 0xc9,
-	0x93, 0xd1, 0x62, 0x3e, 0x93, 0x51, 0xcc, 0x53, 0xf9, 0x1a, 0x7a, 0xc5, 0x7c, 0x26, 0xc4, 0x78,
-	0x7a, 0x53, 0x37, 0x6f, 0xbc, 0xb4, 0x9b, 0x0f, 0x51, 0x25, 0x8b, 0x57, 0xb4, 0xf2, 0xdb, 0xa8,
-	0x22, 0x1c, 0x8e, 0x67, 0xc9, 0x78, 0x9e, 0xfd, 0x30, 0x42, 0xb7, 0x04, 0xc0, 0x92, 0xf1, 0xdc,
-	0xfa, 0x4f, 0x03, 0x6d, 0xd3, 0xe4, 0x3c, 0x19, 0x3e, 0xbd, 0x5d, 0x35, 0x94, 0xf2, 0xe1, 0x17,
-	0x49, 0xbe, 0x9b, 0x33, 0xe5, 0xc3, 0x2f, 0x92, 0x22, 0xfa, 0xf2, 0x4a, 0xf4, 0x37, 0x04, 0xb3,
-	0xfe, 0xd2, 0x60, 0x2c, 0xb4, 0xde, 0x94, 0xab, 0xaa, 0x68, 0x33, 0x60, 0x2d, 0x31, 0xa8, 0x80,
-	0x61, 0xd6, 0xd0, 0x96, 0x20, 0x22, 0x8c, 0x3b, 0x50, 0xb2, 0xfe, 0xd5, 0x40, 0x35, 0x15, 0x86,
-	0x08, 0xfa, 0x85, 0xea, 0xc8, 0x3e, 0x59, 0xa9, 0xce, 0xa2, 0xb4, 0xc2, 0x3d, 0xbd, 0xb4, 0x3f,
-	0x45, 0xf5, 0x69, 0xa6, 0x6c, 0x10, 0x5f, 0x4c, 0xd3, 0xab, 0xaf, 0x78, 0x4e, 0xd5, 0x16, 0xc2,
-	0xcd, 0x69, 0x7a, 0x25, 0xf6, 0xd4, 0xa7, 0x4f, 0x2e, 0x2e, 0x92, 0x69, 0x96, 0x13, 0xf9, 0xd6,
-	0xa5, 0x28, 0x83, 0x44, 0x56, 0xac, 0x2f, 0xcb, 0xa8, 0x12, 0xa5, 0xa3, 0x11, 0x7e, 0x9a, 0x8c,
-	0xdf, 0x30, 0xdb, 0xdf, 0x43, 0x30, 0xcd, 0xaa, 0x94, 0x0c, 0xe2, 0x44, 0xac, 0x9f, 0xe5, 0x49,
-	0xdf, 0x51, 0xb8, 0x54, 0x3b, 0x33, 0xbf, 0x8b, 0x76, 0xd2, 0x4f, 0xe5, 0x4b, 0x51, 0x49, 0x96,
-	0xa5, 0xe4, 0xf6, 0x02, 0xce, 0x04, 0xad, 0xff, 0x28, 0xa1, 0xba, 0x72, 0x47, 0x24, 0x5a, 0x9b,
-	0x35, 0x22, 0xe2, 0xfb, 0x21, 0x09, 0x31, 0xbc, 0xa5, 0x4d, 0x6e, 0x02, 0xf4, 0xc2, 0xa5, 0x13,
-	0x40, 0x40, 0x11, 0xf5, 0x96, 0x46, 0x5e, 0x81, 0x91, 0x2e, 0x87, 0xb5, 0x15, 0x0c, 0x53, 0x0a,
-	0x5b, 0x2b, 0x58, 0xbb, 0x1b, 0x01, 0xac, 0xda, 0x3d, 0xb1, 0x7d, 0x38, 0xd0, 0x26, 0x2c, 0x01,
-	0x52, 0x37, 0x24, 0x34, 0x80, 0x47, 0xe6, 0xbd, 0x15, 0xb8, 0x61, 0x87, 0xf2, 0x1b, 0xd3, 0x32,
-	0x7e, 0x4a, 0xa5, 0xf8, 0x75, 0xe9, 0x05, 0x3c, 0x93, 0x5f, 0x93, 0x1f, 0x9f, 0x0a, 0x3c, 0x60,
-	0x2d, 0xb8, 0xde, 0x5a, 0x55, 0x8e, 0x03, 0x72, 0x82, 0xe1, 0xfa, 0x40, 0x7e, 0xc0, 0xd2, 0x8d,
-	0x0a, 0xb7, 0xaf, 0x1f, 0x59, 0x8f, 0x51, 0x55, 0x24, 0x70, 0xb1, 0x7f, 0x7e, 0x80, 0x36, 0xf2,
-	0x84, 0x1b, 0x72, 0x9e, 0xd8, 0xd5, 0xda, 0x46, 0x25, 0x9a, 0xe6, 0x32, 0x6f, 0x76, 0x4b, 0xfd,
-	0x38, 0xeb, 0x9c, 0xac, 0xc5, 0x0b, 0x3b, 0xa5, 0xaf, 0xb6, 0x63, 0xfd, 0x56, 0xec, 0xf3, 0x59,
-	0x3a, 0x2a, 0xf6, 0xb9, 0x89, 0xd6, 0xc6, 0xfd, 0xab, 0x24, 0x6f, 0x36, 0xf9, 0xbf, 0x79, 0x82,
-	0x20, 0xbf, 0xbb, 0x62, 0xf9, 0x31, 0x6a, 0x98, 0x64, 0xda, 0xdf, 0xf0, 0x4b, 0xd6, 0x4e, 0xae,
-	0xa4, 0x99, 0xeb, 0xb0, 0xfe, 0xbb, 0x2c, 0xf6, 0x67, 0x6e, 0x5e, 0x38, 0x7f, 0xd3, 0xc7, 0xb8,
-	0xf2, 0x8b, 0x1f, 0xe3, 0xde, 0x45, 0xdb, 0xe7, 0xfd, 0x71, 0x3a, 0x1e, 0x9e, 0xf7, 0x47, 0xb1,
-	0xf4, 0x36, 0xfb, 0x1a, 0x57, 0x57, 0xa8, 0x7c, 0x96, 0xed, 0xa3, 0xcd, 0xfe, 0x68, 0xd8, 0x9f,
-	0x25, 0xe2, 0xa0, 0x2d, 0x1f, 0x56, 0xe8, 0x82, 0xb4, 0xfe, 0xb7, 0xa4, 0xff, 0xa0, 0xfb, 0x35,
-	0xb4, 0x97, 0x17, 0x10, 0xdb, 0x5e, 0x2c, 0x5e, 0x69, 0x4d, 0x3b, 0xf0, 0x7c, 0xf1, 0x80, 0x28,
-	0xae, 0x2e, 0xc9, 0x92, 0xbf, 0x65, 0x96, 0xb4, 0x09, 0x5b, 0xa0, 0x0d, 0xdb, 0x6d, 0xfa, 0x76,
-	0x8b, 0x2d, 0x3d, 0xe3, 0x04, 0xa3, 0x69, 0x7b, 0x7e, 0xf6, 0x0b, 0xf0, 0x12, 0x28, 0x55, 0xaf,
-	0xaf, 0xc0, 0x01, 0x0e, 0x08, 0xed, 0x2d, 0xbd, 0x1d, 0x04, 0x9c, 0xff, 0x1c, 0xb4, 0xf9, 0x02,
-	0x1c, 0xda, 0x01, 0x86, 0x2d, 0xed, 0x49, 0x21, 0x60, 0x86, 0xe9, 0x89, 0xe7, 0x2c, 0xbf, 0xe1,
-	0x24, 0x4e, 0x9c, 0x8e, 0x7c, 0x68, 0xa2, 0x15, 0x3d, 0xd9, 0xef, 0xd8, 0x4b, 0x6f, 0x86, 0x3c,
-	0xa2, 0xb6, 0x17, 0x72, 0x06, 0xb5, 0x15, 0x86, 0xfc, 0xdd, 0xc1, 0x21, 0x3e, 0xd4, 0x57, 0x18,
-	0xea, 0x37, 0x9d, 0x6d, 0x6d, 0x0f, 0xcb, 0xb8, 0xec, 0x33, 0xd8, 0x69, 0x6c, 0x7d, 0xb2, 0x91,
-	0x9d, 0x5a, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x31, 0x03, 0x4e, 0xbd, 0xfd, 0x1f, 0x00, 0x00,
+var File_socket_service_proto protoreflect.FileDescriptor
+
+var file_socket_service_proto_rawDesc = []byte{
+	0x0a, 0x14, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x22, 0xba, 0x14, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x6f, 0x63, 0x6b,
+	0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x26,
+	0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72,
+	0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f,
+	0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b,
+	0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x82,
+	0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04,
+	0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d,
+	0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x41, 0x49, 0x5f,
+	0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x49, 0x4c, 0x55,
+	0x52, 0x45, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49,
+	0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x49,
+	0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x06,
+	0x12, 0x11, 0x0a, 0x0d, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45,
+	0x44, 0x10, 0x07, 0x22, 0xa6, 0x12, 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72,
+	0x72, 0x6f, 0x72, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45,
+	0x53, 0x53, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x50, 0x45, 0x52,
+	0x4d, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x45, 0x4e,
+	0x54, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x53, 0x52, 0x43, 0x48,
+	0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x49, 0x4e, 0x54, 0x52, 0x10,
+	0x04, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x49, 0x4f, 0x10, 0x05, 0x12, 0x0d,
+	0x0a, 0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x58, 0x49, 0x4f, 0x10, 0x06, 0x12, 0x0d, 0x0a,
+	0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x32, 0x42, 0x49, 0x47, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x45, 0x58, 0x45, 0x43, 0x10, 0x08, 0x12, 0x0d, 0x0a,
+	0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x42, 0x41, 0x44, 0x46, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x41, 0x47, 0x41, 0x49, 0x4e, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x57, 0x4f, 0x55, 0x4c, 0x44, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10,
+	0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x4d, 0x45, 0x4d, 0x10,
+	0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x41, 0x43, 0x43, 0x45, 0x53, 0x10,
+	0x0d, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10,
+	0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x54, 0x42, 0x4c, 0x4b,
+	0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x42, 0x55, 0x53, 0x59, 0x10,
+	0x10, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10,
+	0x11, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x58, 0x44, 0x45, 0x56, 0x10, 0x12,
+	0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x44, 0x45, 0x56, 0x10, 0x13,
+	0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x54, 0x44, 0x49, 0x52, 0x10,
+	0x14, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x49, 0x53, 0x44, 0x49, 0x52, 0x10,
+	0x15, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x10,
+	0x16, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x46, 0x49, 0x4c, 0x45, 0x10,
+	0x17, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4d, 0x46, 0x49, 0x4c, 0x45, 0x10,
+	0x18, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x54, 0x54, 0x59, 0x10,
+	0x19, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x54, 0x58, 0x54, 0x42, 0x53, 0x59,
+	0x10, 0x1a, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x46, 0x42, 0x49, 0x47, 0x10,
+	0x1b, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x53, 0x50, 0x43, 0x10,
+	0x1c, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x53, 0x50, 0x49, 0x50, 0x45, 0x10,
+	0x1d, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x52, 0x4f, 0x46, 0x53, 0x10, 0x1e,
+	0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4d, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x1f,
+	0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x50, 0x49, 0x50, 0x45, 0x10, 0x20, 0x12,
+	0x0c, 0x0a, 0x08, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x44, 0x4f, 0x4d, 0x10, 0x21, 0x12, 0x0e, 0x0a,
+	0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x22, 0x12, 0x0f, 0x0a,
+	0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4b, 0x10, 0x23, 0x12, 0x11,
+	0x0a, 0x0d, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x4b, 0x10,
+	0x23, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x54, 0x4f,
+	0x4f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x24, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45,
+	0x4e, 0x4f, 0x4c, 0x43, 0x4b, 0x10, 0x25, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45,
+	0x4e, 0x4f, 0x53, 0x59, 0x53, 0x10, 0x26, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59, 0x53, 0x5f, 0x45,
+	0x4e, 0x4f, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, 0x27, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x4c, 0x4f, 0x4f, 0x50, 0x10, 0x28, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x4e, 0x4f, 0x4d, 0x53, 0x47, 0x10, 0x2a, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x49, 0x44, 0x52, 0x4d, 0x10, 0x2b, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f,
+	0x45, 0x43, 0x48, 0x52, 0x4e, 0x47, 0x10, 0x2c, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x53, 0x5f,
+	0x45, 0x4c, 0x32, 0x4e, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x2d, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x4c, 0x33, 0x48, 0x4c, 0x54, 0x10, 0x2e, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x4c, 0x33, 0x52, 0x53, 0x54, 0x10, 0x2f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x4c, 0x4e, 0x52, 0x4e, 0x47, 0x10, 0x30, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x55, 0x4e, 0x41, 0x54, 0x43, 0x48, 0x10, 0x31, 0x12, 0x0e, 0x0a, 0x0a, 0x53,
+	0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x43, 0x53, 0x49, 0x10, 0x32, 0x12, 0x0e, 0x0a, 0x0a, 0x53,
+	0x59, 0x53, 0x5f, 0x45, 0x4c, 0x32, 0x48, 0x4c, 0x54, 0x10, 0x33, 0x12, 0x0d, 0x0a, 0x09, 0x53,
+	0x59, 0x53, 0x5f, 0x45, 0x42, 0x41, 0x44, 0x45, 0x10, 0x34, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x42, 0x41, 0x44, 0x52, 0x10, 0x35, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x58, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x36, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x4e, 0x4f, 0x41, 0x4e, 0x4f, 0x10, 0x37, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x42, 0x41, 0x44, 0x52, 0x51, 0x43, 0x10, 0x38, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x42, 0x41, 0x44, 0x53, 0x4c, 0x54, 0x10, 0x39, 0x12, 0x0e, 0x0a, 0x0a, 0x53,
+	0x59, 0x53, 0x5f, 0x45, 0x42, 0x46, 0x4f, 0x4e, 0x54, 0x10, 0x3b, 0x12, 0x0e, 0x0a, 0x0a, 0x53,
+	0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x53, 0x54, 0x52, 0x10, 0x3c, 0x12, 0x0f, 0x0a, 0x0b, 0x53,
+	0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x3d, 0x12, 0x0d, 0x0a, 0x09,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x3e, 0x12, 0x0d, 0x0a, 0x09, 0x53,
+	0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x53, 0x52, 0x10, 0x3f, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x4e, 0x45, 0x54, 0x10, 0x40, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x50, 0x4b, 0x47, 0x10, 0x41, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x42, 0x12, 0x0f, 0x0a, 0x0b, 0x53,
+	0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x43, 0x12, 0x0c, 0x0a, 0x08,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x41, 0x44, 0x56, 0x10, 0x44, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x53, 0x52, 0x4d, 0x4e, 0x54, 0x10, 0x45, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x10, 0x46, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x10, 0x47, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x48, 0x4f, 0x50, 0x10, 0x48, 0x12, 0x0f, 0x0a, 0x0b,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x44, 0x4f, 0x54, 0x44, 0x4f, 0x54, 0x10, 0x49, 0x12, 0x0f, 0x0a,
+	0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x42, 0x41, 0x44, 0x4d, 0x53, 0x47, 0x10, 0x4a, 0x12, 0x11,
+	0x0a, 0x0d, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4f, 0x56, 0x45, 0x52, 0x46, 0x4c, 0x4f, 0x57, 0x10,
+	0x4b, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x54, 0x55, 0x4e, 0x49,
+	0x51, 0x10, 0x4c, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x42, 0x41, 0x44, 0x46,
+	0x44, 0x10, 0x4d, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x52, 0x45, 0x4d, 0x43,
+	0x48, 0x47, 0x10, 0x4e, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4c, 0x49, 0x42,
+	0x41, 0x43, 0x43, 0x10, 0x4f, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4c, 0x49,
+	0x42, 0x42, 0x41, 0x44, 0x10, 0x50, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4c,
+	0x49, 0x42, 0x53, 0x43, 0x4e, 0x10, 0x51, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45,
+	0x4c, 0x49, 0x42, 0x4d, 0x41, 0x58, 0x10, 0x52, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x53, 0x5f,
+	0x45, 0x4c, 0x49, 0x42, 0x45, 0x58, 0x45, 0x43, 0x10, 0x53, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x49, 0x4c, 0x53, 0x45, 0x51, 0x10, 0x54, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x55, 0x12, 0x10, 0x0a, 0x0c,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x53, 0x54, 0x52, 0x50, 0x49, 0x50, 0x45, 0x10, 0x56, 0x12, 0x0e,
+	0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x57, 0x12, 0x10,
+	0x0a, 0x0c, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x54, 0x53, 0x4f, 0x43, 0x4b, 0x10, 0x58,
+	0x12, 0x14, 0x0a, 0x10, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x44, 0x45, 0x53, 0x54, 0x41, 0x44, 0x44,
+	0x52, 0x52, 0x45, 0x51, 0x10, 0x59, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4d,
+	0x53, 0x47, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x5a, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x59, 0x53, 0x5f,
+	0x45, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x5b, 0x12, 0x13, 0x0a, 0x0f,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x4f, 0x50, 0x54, 0x10,
+	0x5c, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x4e,
+	0x4f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x5d, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x53, 0x4f, 0x43, 0x4b, 0x54, 0x4e, 0x4f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52,
+	0x54, 0x10, 0x5e, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4f, 0x50, 0x4e, 0x4f,
+	0x54, 0x53, 0x55, 0x50, 0x50, 0x10, 0x5f, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45,
+	0x4e, 0x4f, 0x54, 0x53, 0x55, 0x50, 0x10, 0x5f, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x59, 0x53, 0x5f,
+	0x45, 0x50, 0x46, 0x4e, 0x4f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x60, 0x12, 0x14,
+	0x0a, 0x10, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x41, 0x46, 0x4e, 0x4f, 0x53, 0x55, 0x50, 0x50, 0x4f,
+	0x52, 0x54, 0x10, 0x61, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x41, 0x44, 0x44,
+	0x52, 0x49, 0x4e, 0x55, 0x53, 0x45, 0x10, 0x62, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x59, 0x53, 0x5f,
+	0x45, 0x41, 0x44, 0x44, 0x52, 0x4e, 0x4f, 0x54, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x10, 0x63, 0x12,
+	0x10, 0x0a, 0x0c, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x45, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10,
+	0x64, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x45, 0x54, 0x55, 0x4e, 0x52,
+	0x45, 0x41, 0x43, 0x48, 0x10, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e,
+	0x45, 0x54, 0x52, 0x45, 0x53, 0x45, 0x54, 0x10, 0x66, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x67, 0x12,
+	0x12, 0x0a, 0x0e, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x52, 0x45, 0x53, 0x45,
+	0x54, 0x10, 0x68, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x42, 0x55,
+	0x46, 0x53, 0x10, 0x69, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x49, 0x53, 0x43,
+	0x4f, 0x4e, 0x4e, 0x10, 0x6a, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f,
+	0x54, 0x43, 0x4f, 0x4e, 0x4e, 0x10, 0x6b, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59, 0x53, 0x5f, 0x45,
+	0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x6c, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x54, 0x4f, 0x4f, 0x4d, 0x41, 0x4e, 0x59, 0x52, 0x45, 0x46, 0x53, 0x10, 0x6d,
+	0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x44, 0x4f, 0x55,
+	0x54, 0x10, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x43, 0x4f, 0x4e, 0x4e,
+	0x52, 0x45, 0x46, 0x55, 0x53, 0x45, 0x44, 0x10, 0x6f, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x48, 0x4f, 0x53, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x70, 0x12, 0x14, 0x0a, 0x10,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x48, 0x4f, 0x53, 0x54, 0x55, 0x4e, 0x52, 0x45, 0x41, 0x43, 0x48,
+	0x10, 0x71, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x41, 0x4c, 0x52, 0x45, 0x41,
+	0x44, 0x59, 0x10, 0x72, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x49, 0x4e, 0x50,
+	0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x73, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x53, 0x54, 0x41, 0x4c, 0x45, 0x10, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x53,
+	0x5f, 0x45, 0x55, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x75, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x54, 0x4e, 0x41, 0x4d, 0x10, 0x76, 0x12, 0x0f, 0x0a, 0x0b, 0x53,
+	0x59, 0x53, 0x5f, 0x45, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x10, 0x77, 0x12, 0x0e, 0x0a, 0x0a,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x49, 0x53, 0x4e, 0x41, 0x4d, 0x10, 0x78, 0x12, 0x11, 0x0a, 0x0d,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x49, 0x4f, 0x10, 0x79, 0x12,
+	0x0e, 0x0a, 0x0a, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x44, 0x51, 0x55, 0x4f, 0x54, 0x10, 0x7a, 0x12,
+	0x11, 0x0a, 0x0d, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d,
+	0x10, 0x7b, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4d, 0x45, 0x44, 0x49, 0x55,
+	0x4d, 0x54, 0x59, 0x50, 0x45, 0x10, 0x7c, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59, 0x53, 0x5f, 0x45,
+	0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x7d, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x4b, 0x45, 0x59, 0x10, 0x7e, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x59,
+	0x53, 0x5f, 0x45, 0x4b, 0x45, 0x59, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x7f, 0x12,
+	0x14, 0x0a, 0x0f, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4b, 0x45, 0x59, 0x52, 0x45, 0x56, 0x4f, 0x4b,
+	0x45, 0x44, 0x10, 0x80, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x4b, 0x45,
+	0x59, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x81, 0x01, 0x12, 0x18, 0x0a, 0x13,
+	0x53, 0x59, 0x53, 0x5f, 0x45, 0x4e, 0x4f, 0x54, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x41,
+	0x42, 0x4c, 0x45, 0x10, 0x83, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x53, 0x59, 0x53, 0x5f, 0x45, 0x52,
+	0x46, 0x4b, 0x49, 0x4c, 0x4c, 0x10, 0x84, 0x01, 0x1a, 0x02, 0x10, 0x01, 0x42, 0x0f, 0x0a, 0x0d,
+	0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0f, 0x0a,
+	0x0d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x9c,
+	0x01, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12,
+	0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f,
+	0x72, 0x74, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64,
+	0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x61,
+	0x63, 0x6b, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28,
+	0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d,
+	0x65, 0x48, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x61, 0x63,
+	0x6b, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f,
+	0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x22, 0x84, 0x05,
+	0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x46, 0x61, 0x6d, 0x69,
+	0x6c, 0x79, 0x52, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53,
+	0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x63,
+	0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x3e, 0x0a, 0x0e, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f,
+	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e,
+	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74,
+	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x64, 0x64,
+	0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x78,
+	0x79, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2a,
+	0x0a, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x67,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e,
+	0x42, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x67, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x09, 0x72, 0x65,
+	0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
+	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
+	0x73, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x02, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49,
+	0x70, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x09,
+	0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01,
+	0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a,
+	0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49,
+	0x64, 0x88, 0x01, 0x01, 0x22, 0x2c, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x46, 0x61,
+	0x6d, 0x69, 0x6c, 0x79, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x08,
+	0x0a, 0x04, 0x49, 0x50, 0x76, 0x34, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x50, 0x76, 0x36,
+	0x10, 0x02, 0x22, 0x2f, 0x0a, 0x0e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74,
+	0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x50, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10,
+	0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44,
+	0x50, 0x10, 0x02, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65, 0x78,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x69,
+	0x73, 0x74, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x67, 0x42, 0x0c, 0x0a, 0x0a,
+	0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61,
+	0x70, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+	0x74, 0x5f, 0x69, 0x64, 0x22, 0x91, 0x02, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53,
+	0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x30, 0x0a, 0x11, 0x73, 0x6f,
+	0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44,
+	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x0e,
+	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x01, 0x52, 0x0d,
+	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01,
+	0x12, 0x47, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e,
+	0x61, 0x6c, 0x5f, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50,
+	0x6f, 0x72, 0x74, 0x48, 0x02, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x78, 0x74, 0x65,
+	0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x6f,
+	0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x42,
+	0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
+	0x73, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65, 0x78, 0x74,
+	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x22, 0x7e, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x63, 0x6b, 0x65,
+	0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
+	0x70, 0x74, 0x6f, 0x72, 0x12, 0x42, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65, 0x78,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72,
+	0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x78,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x22, 0x6a, 0x0a, 0x09, 0x42, 0x69, 0x6e, 0x64,
+	0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x47, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x64, 0x64,
+	0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x78,
+	0x79, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x14,
+	0x0a, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61,
+	0x6c, 0x5f, 0x69, 0x70, 0x22, 0x43, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65,
+	0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11,
+	0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
+	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44,
+	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x22, 0x73, 0x0a, 0x12, 0x47, 0x65, 0x74,
+	0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12,
+	0x47, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61,
+	0x6c, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f,
+	0x72, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x78, 0x74, 0x65, 0x72,
+	0x6e, 0x61, 0x6c, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x6f,
+	0x78, 0x79, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x22, 0x41,
+	0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64,
+	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
+	0x72, 0x22, 0x54, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+	0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x34, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x70,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x00,
+	0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
+	0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x22, 0xdc, 0x07, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x6b,
+	0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65,
+	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76,
+	0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x40, 0x0a, 0x06, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e,
+	0x61, 0x6d, 0x65, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x22, 0x65, 0x0a, 0x11, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54,
+	0x5f, 0x53, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x4f, 0x43,
+	0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x4c, 0x5f, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x01,
+	0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x4c, 0x5f, 0x54,
+	0x43, 0x50, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
+	0x4f, 0x4c, 0x5f, 0x55, 0x44, 0x50, 0x10, 0x11, 0x22, 0xcb, 0x05, 0x0a, 0x10, 0x53, 0x6f, 0x63,
+	0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0c, 0x0a,
+	0x08, 0x53, 0x4f, 0x50, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53,
+	0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01,
+	0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f, 0x52, 0x45,
+	0x55, 0x53, 0x45, 0x41, 0x44, 0x44, 0x52, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4f, 0x43,
+	0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a,
+	0x0f, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
+	0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f,
+	0x44, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x53,
+	0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41,
+	0x53, 0x54, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
+	0x4f, 0x5f, 0x53, 0x4e, 0x44, 0x42, 0x55, 0x46, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x4f,
+	0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f, 0x52, 0x43, 0x56, 0x42, 0x55, 0x46, 0x10, 0x08,
+	0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f, 0x4b, 0x45,
+	0x45, 0x50, 0x41, 0x4c, 0x49, 0x56, 0x45, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x43,
+	0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f, 0x4f, 0x4f, 0x42, 0x49, 0x4e, 0x4c, 0x49, 0x4e, 0x45,
+	0x10, 0x0a, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f,
+	0x4c, 0x49, 0x4e, 0x47, 0x45, 0x52, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x43, 0x4b,
+	0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f, 0x52, 0x43, 0x56, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x10, 0x14,
+	0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4f, 0x5f, 0x53, 0x4e,
+	0x44, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x10, 0x15, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x4f, 0x43, 0x4b,
+	0x45, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x4f, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53,
+	0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x02, 0x12, 0x15,
+	0x0a, 0x11, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x48, 0x44, 0x52, 0x49,
+	0x4e, 0x43, 0x4c, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+	0x49, 0x50, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12,
+	0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x4c,
+	0x41, 0x59, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54,
+	0x43, 0x50, 0x5f, 0x4d, 0x41, 0x58, 0x53, 0x45, 0x47, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53,
+	0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x43, 0x4f, 0x52, 0x4b, 0x10, 0x03,
+	0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x4b,
+	0x45, 0x45, 0x50, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x4f, 0x43,
+	0x4b, 0x45, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x49, 0x4e, 0x54, 0x56,
+	0x4c, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x43,
+	0x50, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x43, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x53,
+	0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x4e, 0x54,
+	0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x43, 0x50,
+	0x5f, 0x4c, 0x49, 0x4e, 0x47, 0x45, 0x52, 0x32, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x4f,
+	0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x44, 0x45, 0x46, 0x45, 0x52, 0x5f, 0x41,
+	0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x4f, 0x43, 0x4b, 0x45,
+	0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x43, 0x4c, 0x41,
+	0x4d, 0x50, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54,
+	0x43, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x43,
+	0x4b, 0x45, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x51, 0x55, 0x49, 0x43, 0x4b, 0x41, 0x43, 0x4b,
+	0x10, 0x0c, 0x1a, 0x02, 0x10, 0x01, 0x22, 0x79, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x53, 0x6f, 0x63,
+	0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63,
+	0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f,
+	0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x31,
+	0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x17, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x6f, 0x63, 0x6b,
+	0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x79, 0x0a, 0x17, 0x47, 0x65,
+	0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f,
+	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+	0x6f, 0x72, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x6b,
+	0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x31,
+	0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x17, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x6f, 0x63, 0x6b,
+	0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x22, 0xb4, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64,
+	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
+	0x72, 0x12, 0x33, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x08, 0x72, 0x65,
+	0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x12, 0x2c, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
+	0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48,
+	0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+	0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
+	0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x6d, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x6e,
+	0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x47, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x78,
+	0x79, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x70,
+	0x72, 0x6f, 0x78, 0x79, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x88, 0x01,
+	0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65, 0x78, 0x74, 0x65,
+	0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x70, 0x22, 0x56, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x65,
+	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x63, 0x6b,
+	0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72,
+	0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x67,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x6c, 0x6f, 0x67, 0x22,
+	0x0d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x7e,
+	0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+	0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x63, 0x6b,
+	0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x0f,
+	0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
+	0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74,
+	0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xb7,
+	0x01, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x37,
+	0x0a, 0x15, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73,
+	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52,
+	0x13, 0x6e, 0x65, 0x77, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
+	0x70, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74,
+	0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72,
+	0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74,
+	0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f,
+	0x6e, 0x65, 0x77, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72,
+	0x69, 0x70, 0x74, 0x6f, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
+	0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x0f, 0x53, 0x68, 0x75,
+	0x74, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11,
+	0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
+	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44,
+	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x03, 0x68, 0x6f, 0x77,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x53, 0x68, 0x75, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x2e, 0x48, 0x6f, 0x77, 0x52, 0x03, 0x68, 0x6f, 0x77, 0x12, 0x1f, 0x0a, 0x0b, 0x73,
+	0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x4d, 0x0a, 0x03,
+	0x48, 0x6f, 0x77, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a,
+	0x0e, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x55, 0x54, 0x5f, 0x52, 0x44, 0x10,
+	0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x55, 0x54,
+	0x5f, 0x57, 0x52, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+	0x53, 0x48, 0x55, 0x54, 0x5f, 0x52, 0x44, 0x57, 0x52, 0x10, 0x03, 0x22, 0x0f, 0x0a, 0x0d, 0x53,
+	0x68, 0x75, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x71, 0x0a, 0x0c,
+	0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11,
+	0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
+	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44,
+	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x65, 0x6e,
+	0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00,
+	0x52, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42,
+	0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22,
+	0x0c, 0x0a, 0x0a, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0xa0, 0x02,
+	0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a,
+	0x11, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+	0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74,
+	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x04, 0x64, 0x61,
+	0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x08, 0x01, 0x52, 0x04, 0x64, 0x61,
+	0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6f, 0x66, 0x66,
+	0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x65, 0x61,
+	0x6d, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x01, 0x52, 0x06, 0x73,
+	0x65, 0x6e, 0x64, 0x54, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65,
+	0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x01, 0x48, 0x02, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f,
+	0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73,
+	0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x6f, 0x42, 0x12, 0x0a, 0x10,
+	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+	0x22, 0x3b, 0x0a, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x20, 0x0a,
+	0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42,
+	0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x22, 0xef, 0x01,
+	0x0a, 0x0e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72,
+	0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x63,
+	0x6b, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a,
+	0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6c,
+	0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x61,
+	0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
+	0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01,
+	0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73,
+	0x88, 0x01, 0x01, 0x22, 0x2c, 0x0a, 0x05, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x08, 0x0a, 0x04,
+	0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x53, 0x47, 0x5f, 0x4f, 0x4f,
+	0x42, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x53, 0x47, 0x5f, 0x50, 0x45, 0x45, 0x4b, 0x10,
+	0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f,
+	0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22,
+	0xfa, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79,
+	0x12, 0x28, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65,
+	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x65, 0x61,
+	0x6d, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x04, 0x64, 0x61,
+	0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x08, 0x01, 0x48, 0x01, 0x52, 0x04,
+	0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69,
+	0x76, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65,
+	0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x02, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76,
+	0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x66,
+	0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03,
+	0x52, 0x0a, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42,
+	0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65,
+	0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72,
+	0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x0e, 0x0a, 0x0c,
+	0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xce, 0x03, 0x0a,
+	0x09, 0x50, 0x6f, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f,
+	0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x73,
+	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e,
+	0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x65,
+	0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6f, 0x62, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbf, 0x02, 0x0a, 0x0d,
+	0x50, 0x6f, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x13, 0x0a,
+	0x0f, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x4e, 0x4f, 0x4e, 0x45,
+	0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c,
+	0x4c, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+	0x50, 0x4f, 0x4c, 0x4c, 0x50, 0x52, 0x49, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4f, 0x43,
+	0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x4f, 0x55, 0x54, 0x10, 0x04, 0x12, 0x12, 0x0a,
+	0x0e, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x45, 0x52, 0x52, 0x10,
+	0x08, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x4c,
+	0x48, 0x55, 0x50, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+	0x50, 0x4f, 0x4c, 0x4c, 0x4e, 0x56, 0x41, 0x4c, 0x10, 0x20, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x4f,
+	0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x52, 0x44, 0x4e, 0x4f, 0x52, 0x4d, 0x10,
+	0x40, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x4c,
+	0x52, 0x44, 0x42, 0x41, 0x4e, 0x44, 0x10, 0x80, 0x01, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x4f, 0x43,
+	0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x57, 0x52, 0x4e, 0x4f, 0x52, 0x4d, 0x10, 0x80,
+	0x02, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x4c,
+	0x57, 0x52, 0x42, 0x41, 0x4e, 0x44, 0x10, 0x80, 0x04, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x4f, 0x43,
+	0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x4d, 0x53, 0x47, 0x10, 0x80, 0x08, 0x12, 0x16,
+	0x0a, 0x11, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x52, 0x45, 0x4d,
+	0x4f, 0x56, 0x45, 0x10, 0x80, 0x20, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54,
+	0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x52, 0x44, 0x48, 0x55, 0x50, 0x10, 0x80, 0x40, 0x22, 0x7d, 0x0a,
+	0x0b, 0x50, 0x6f, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x06,
+	0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x45, 0x76, 0x65,
+	0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x74, 0x69,
+	0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65,
+	0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x69, 0x6d,
+	0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x39, 0x0a, 0x09,
+	0x50, 0x6f, 0x6c, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2c, 0x0a, 0x06, 0x65, 0x76, 0x65,
+	0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52,
+	0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x7c, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x6c,
+	0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x56, 0x0a,
+	0x10, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65,
+	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x46, 0x61,
+	0x6d, 0x69, 0x6c, 0x79, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x46, 0x61, 0x6d,
+	0x69, 0x6c, 0x69, 0x65, 0x73, 0x22, 0x88, 0x04, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76,
+	0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d,
+	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x0a,
+	0x0e, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63,
+	0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69,
+	0x61, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61,
+	0x73, 0x65, 0x73, 0x22, 0xf7, 0x02, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64,
+	0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x53,
+	0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x46, 0x41,
+	0x4d, 0x49, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54,
+	0x5f, 0x45, 0x41, 0x49, 0x5f, 0x41, 0x47, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13,
+	0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x42, 0x41, 0x44, 0x46, 0x4c,
+	0x41, 0x47, 0x53, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f,
+	0x45, 0x41, 0x49, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x4f,
+	0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x10,
+	0x05, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f,
+	0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x4f, 0x43, 0x4b,
+	0x45, 0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x4e, 0x4f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x07, 0x12,
+	0x15, 0x0a, 0x11, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x4e, 0x4f,
+	0x4e, 0x41, 0x4d, 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54,
+	0x5f, 0x45, 0x41, 0x49, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x09, 0x12, 0x17,
+	0x0a, 0x13, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x53, 0x4f, 0x43,
+	0x4b, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x4f, 0x43, 0x4b, 0x45,
+	0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x0b, 0x12, 0x17,
+	0x0a, 0x13, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x42, 0x41, 0x44,
+	0x48, 0x49, 0x4e, 0x54, 0x53, 0x10, 0x0c, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x43, 0x4b, 0x45,
+	0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x0d,
+	0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x4f,
+	0x56, 0x45, 0x52, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4f, 0x43,
+	0x4b, 0x45, 0x54, 0x5f, 0x45, 0x41, 0x49, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x0f, 0x42, 0x11, 0x0a,
+	0x0f, 0x5f, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
+	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f,
+	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x62,
+	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_socket_service_proto_rawDescOnce sync.Once
+	file_socket_service_proto_rawDescData = file_socket_service_proto_rawDesc
+)
+
+func file_socket_service_proto_rawDescGZIP() []byte {
+	file_socket_service_proto_rawDescOnce.Do(func() {
+		file_socket_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_socket_service_proto_rawDescData)
+	})
+	return file_socket_service_proto_rawDescData
+}
+
+var file_socket_service_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
+var file_socket_service_proto_msgTypes = make([]protoimpl.MessageInfo, 34)
+var file_socket_service_proto_goTypes = []interface{}{
+	(RemoteSocketServiceError_ErrorCode)(0),   // 0: appengine.RemoteSocketServiceError.ErrorCode
+	(RemoteSocketServiceError_SystemError)(0), // 1: appengine.RemoteSocketServiceError.SystemError
+	(CreateSocketRequest_SocketFamily)(0),     // 2: appengine.CreateSocketRequest.SocketFamily
+	(CreateSocketRequest_SocketProtocol)(0),   // 3: appengine.CreateSocketRequest.SocketProtocol
+	(SocketOption_SocketOptionLevel)(0),       // 4: appengine.SocketOption.SocketOptionLevel
+	(SocketOption_SocketOptionName)(0),        // 5: appengine.SocketOption.SocketOptionName
+	(ShutDownRequest_How)(0),                  // 6: appengine.ShutDownRequest.How
+	(ReceiveRequest_Flags)(0),                 // 7: appengine.ReceiveRequest.Flags
+	(PollEvent_PollEventFlag)(0),              // 8: appengine.PollEvent.PollEventFlag
+	(ResolveReply_ErrorCode)(0),               // 9: appengine.ResolveReply.ErrorCode
+	(*RemoteSocketServiceError)(nil),          // 10: appengine.RemoteSocketServiceError
+	(*AddressPort)(nil),                       // 11: appengine.AddressPort
+	(*CreateSocketRequest)(nil),               // 12: appengine.CreateSocketRequest
+	(*CreateSocketReply)(nil),                 // 13: appengine.CreateSocketReply
+	(*BindRequest)(nil),                       // 14: appengine.BindRequest
+	(*BindReply)(nil),                         // 15: appengine.BindReply
+	(*GetSocketNameRequest)(nil),              // 16: appengine.GetSocketNameRequest
+	(*GetSocketNameReply)(nil),                // 17: appengine.GetSocketNameReply
+	(*GetPeerNameRequest)(nil),                // 18: appengine.GetPeerNameRequest
+	(*GetPeerNameReply)(nil),                  // 19: appengine.GetPeerNameReply
+	(*SocketOption)(nil),                      // 20: appengine.SocketOption
+	(*SetSocketOptionsRequest)(nil),           // 21: appengine.SetSocketOptionsRequest
+	(*SetSocketOptionsReply)(nil),             // 22: appengine.SetSocketOptionsReply
+	(*GetSocketOptionsRequest)(nil),           // 23: appengine.GetSocketOptionsRequest
+	(*GetSocketOptionsReply)(nil),             // 24: appengine.GetSocketOptionsReply
+	(*ConnectRequest)(nil),                    // 25: appengine.ConnectRequest
+	(*ConnectReply)(nil),                      // 26: appengine.ConnectReply
+	(*ListenRequest)(nil),                     // 27: appengine.ListenRequest
+	(*ListenReply)(nil),                       // 28: appengine.ListenReply
+	(*AcceptRequest)(nil),                     // 29: appengine.AcceptRequest
+	(*AcceptReply)(nil),                       // 30: appengine.AcceptReply
+	(*ShutDownRequest)(nil),                   // 31: appengine.ShutDownRequest
+	(*ShutDownReply)(nil),                     // 32: appengine.ShutDownReply
+	(*CloseRequest)(nil),                      // 33: appengine.CloseRequest
+	(*CloseReply)(nil),                        // 34: appengine.CloseReply
+	(*SendRequest)(nil),                       // 35: appengine.SendRequest
+	(*SendReply)(nil),                         // 36: appengine.SendReply
+	(*ReceiveRequest)(nil),                    // 37: appengine.ReceiveRequest
+	(*ReceiveReply)(nil),                      // 38: appengine.ReceiveReply
+	(*PollEvent)(nil),                         // 39: appengine.PollEvent
+	(*PollRequest)(nil),                       // 40: appengine.PollRequest
+	(*PollReply)(nil),                         // 41: appengine.PollReply
+	(*ResolveRequest)(nil),                    // 42: appengine.ResolveRequest
+	(*ResolveReply)(nil),                      // 43: appengine.ResolveReply
+}
+var file_socket_service_proto_depIdxs = []int32{
+	2,  // 0: appengine.CreateSocketRequest.family:type_name -> appengine.CreateSocketRequest.SocketFamily
+	3,  // 1: appengine.CreateSocketRequest.protocol:type_name -> appengine.CreateSocketRequest.SocketProtocol
+	20, // 2: appengine.CreateSocketRequest.socket_options:type_name -> appengine.SocketOption
+	11, // 3: appengine.CreateSocketRequest.proxy_external_ip:type_name -> appengine.AddressPort
+	11, // 4: appengine.CreateSocketRequest.remote_ip:type_name -> appengine.AddressPort
+	11, // 5: appengine.CreateSocketReply.server_address:type_name -> appengine.AddressPort
+	11, // 6: appengine.CreateSocketReply.proxy_external_ip:type_name -> appengine.AddressPort
+	11, // 7: appengine.BindRequest.proxy_external_ip:type_name -> appengine.AddressPort
+	11, // 8: appengine.BindReply.proxy_external_ip:type_name -> appengine.AddressPort
+	11, // 9: appengine.GetSocketNameReply.proxy_external_ip:type_name -> appengine.AddressPort
+	11, // 10: appengine.GetPeerNameReply.peer_ip:type_name -> appengine.AddressPort
+	4,  // 11: appengine.SocketOption.level:type_name -> appengine.SocketOption.SocketOptionLevel
+	5,  // 12: appengine.SocketOption.option:type_name -> appengine.SocketOption.SocketOptionName
+	20, // 13: appengine.SetSocketOptionsRequest.options:type_name -> appengine.SocketOption
+	20, // 14: appengine.GetSocketOptionsRequest.options:type_name -> appengine.SocketOption
+	20, // 15: appengine.GetSocketOptionsReply.options:type_name -> appengine.SocketOption
+	11, // 16: appengine.ConnectRequest.remote_ip:type_name -> appengine.AddressPort
+	11, // 17: appengine.ConnectReply.proxy_external_ip:type_name -> appengine.AddressPort
+	11, // 18: appengine.AcceptReply.remote_address:type_name -> appengine.AddressPort
+	6,  // 19: appengine.ShutDownRequest.how:type_name -> appengine.ShutDownRequest.How
+	11, // 20: appengine.SendRequest.send_to:type_name -> appengine.AddressPort
+	11, // 21: appengine.ReceiveReply.received_from:type_name -> appengine.AddressPort
+	39, // 22: appengine.PollRequest.events:type_name -> appengine.PollEvent
+	39, // 23: appengine.PollReply.events:type_name -> appengine.PollEvent
+	2,  // 24: appengine.ResolveRequest.address_families:type_name -> appengine.CreateSocketRequest.SocketFamily
+	25, // [25:25] is the sub-list for method output_type
+	25, // [25:25] is the sub-list for method input_type
+	25, // [25:25] is the sub-list for extension type_name
+	25, // [25:25] is the sub-list for extension extendee
+	0,  // [0:25] is the sub-list for field type_name
+}
+
+func init() { file_socket_service_proto_init() }
+func file_socket_service_proto_init() {
+	if File_socket_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_socket_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RemoteSocketServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AddressPort); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateSocketRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateSocketReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BindRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BindReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSocketNameRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSocketNameReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetPeerNameRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetPeerNameReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SocketOption); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetSocketOptionsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetSocketOptionsReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSocketOptionsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSocketOptionsReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ConnectRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ConnectReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ListenRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ListenReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AcceptRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AcceptReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ShutDownRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ShutDownReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CloseRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CloseReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SendRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SendReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ReceiveRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ReceiveReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PollEvent); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PollRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PollReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ResolveRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_socket_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ResolveReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_socket_service_proto_msgTypes[0].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[5].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[7].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[9].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[15].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[16].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[19].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[20].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[23].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[25].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[26].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[27].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[28].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[30].OneofWrappers = []interface{}{}
+	file_socket_service_proto_msgTypes[33].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_socket_service_proto_rawDesc,
+			NumEnums:      10,
+			NumMessages:   34,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_socket_service_proto_goTypes,
+		DependencyIndexes: file_socket_service_proto_depIdxs,
+		EnumInfos:         file_socket_service_proto_enumTypes,
+		MessageInfos:      file_socket_service_proto_msgTypes,
+	}.Build()
+	File_socket_service_proto = out.File
+	file_socket_service_proto_rawDesc = nil
+	file_socket_service_proto_goTypes = nil
+	file_socket_service_proto_depIdxs = nil
 }
diff --git a/internal/socket/socket_service.proto b/internal/socket/socket_service.proto
index 2fcc7953..3d7adc1a 100644
--- a/internal/socket/socket_service.proto
+++ b/internal/socket/socket_service.proto
@@ -1,10 +1,11 @@
-syntax = "proto2";
-option go_package = "socket";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/socket";
 
 package appengine;
 
 message RemoteSocketServiceError {
   enum ErrorCode {
+    NONE = 0;
     SYSTEM_ERROR = 1;
     GAI_ERROR = 2;
     FAILURE = 4;
@@ -15,7 +16,6 @@ message RemoteSocketServiceError {
 
   enum SystemError {
     option allow_alias = true;
-
     SYS_SUCCESS = 0;
     SYS_EPERM = 1;
     SYS_ENOENT = 2;
@@ -147,17 +147,16 @@ message RemoteSocketServiceError {
     SYS_EKEYEXPIRED = 127;
     SYS_EKEYREVOKED = 128;
     SYS_EKEYREJECTED = 129;
-    SYS_EOWNERDEAD = 130;
     SYS_ENOTRECOVERABLE = 131;
     SYS_ERFKILL = 132;
   }
 
-  optional int32 system_error = 1 [default=0];
+  optional int32 system_error = 1 ;
   optional string error_detail = 2;
 }
 
 message AddressPort {
-  required int32 port = 1;
+  int32 port = 1;
   optional bytes packed_address = 2;
 
   optional string hostname_hint = 3;
@@ -167,23 +166,25 @@ message AddressPort {
 
 message CreateSocketRequest {
   enum SocketFamily {
+    NONE = 0;
     IPv4 = 1;
     IPv6 = 2;
   }
 
   enum SocketProtocol {
+    SP_NONE = 0;
     TCP = 1;
     UDP = 2;
   }
 
-  required SocketFamily family = 1;
-  required SocketProtocol protocol = 2;
+  SocketFamily family = 1;
+  SocketProtocol protocol = 2;
 
   repeated SocketOption socket_options = 3;
 
   optional AddressPort proxy_external_ip = 4;
 
-  optional int32 listen_backlog = 5 [default=0];
+  optional int32 listen_backlog = 5 ;
 
   optional AddressPort remote_ip = 6;
 
@@ -199,14 +200,13 @@ message CreateSocketReply {
 
   optional AddressPort proxy_external_ip = 4;
 
-  extensions 1000 to max;
 }
 
 
 
 message BindRequest {
-  required string socket_descriptor = 1;
-  required AddressPort proxy_external_ip = 2;
+  string socket_descriptor = 1;
+  AddressPort proxy_external_ip = 2;
 }
 
 message BindReply {
@@ -216,7 +216,7 @@ message BindReply {
 
 
 message GetSocketNameRequest {
-  required string socket_descriptor = 1;
+  string socket_descriptor = 1;
 }
 
 message GetSocketNameReply {
@@ -226,7 +226,7 @@ message GetSocketNameReply {
 
 
 message GetPeerNameRequest {
-  required string socket_descriptor = 1;
+  string socket_descriptor = 1;
 }
 
 message GetPeerNameReply {
@@ -246,6 +246,7 @@ message SocketOption {
   enum SocketOptionName {
     option allow_alias = true;
 
+    SOP_NONE = 0;
     SOCKET_SO_DEBUG = 1;
     SOCKET_SO_REUSEADDR = 2;
     SOCKET_SO_TYPE = 3;
@@ -279,14 +280,14 @@ message SocketOption {
     SOCKET_TCP_QUICKACK = 12;
   }
 
-  required SocketOptionLevel level = 1;
-  required SocketOptionName option = 2;
-  required bytes value = 3;
+  SocketOptionLevel level = 1;
+ SocketOptionName option = 2;
+ bytes value = 3;
 }
 
 
 message SetSocketOptionsRequest {
-  required string socket_descriptor = 1;
+ string socket_descriptor = 1;
   repeated SocketOption options = 2;
 }
 
@@ -294,7 +295,7 @@ message SetSocketOptionsReply {
 }
 
 message GetSocketOptionsRequest {
-  required string socket_descriptor = 1;
+ string socket_descriptor = 1;
   repeated SocketOption options = 2;
 }
 
@@ -304,21 +305,19 @@ message GetSocketOptionsReply {
 
 
 message ConnectRequest {
-  required string socket_descriptor = 1;
-  required AddressPort remote_ip = 2;
-  optional double timeout_seconds = 3 [default=-1];
+ string socket_descriptor = 1;
+ AddressPort remote_ip = 2;
+  optional double timeout_seconds = 3 ;
 }
 
 message ConnectReply {
   optional AddressPort proxy_external_ip = 1;
-
-  extensions 1000 to max;
 }
 
 
 message ListenRequest {
-  required string socket_descriptor = 1;
-  required int32 backlog = 2;
+ string socket_descriptor = 1;
+ int32 backlog = 2;
 }
 
 message ListenReply {
@@ -326,8 +325,8 @@ message ListenReply {
 
 
 message AcceptRequest {
-  required string socket_descriptor = 1;
-  optional double timeout_seconds = 2 [default=-1];
+ string socket_descriptor = 1;
+  optional double timeout_seconds = 2 ;
 }
 
 message AcceptReply {
@@ -339,13 +338,14 @@ message AcceptReply {
 
 message ShutDownRequest {
   enum How {
+    NONE = 0;
     SOCKET_SHUT_RD = 1;
     SOCKET_SHUT_WR = 2;
     SOCKET_SHUT_RDWR = 3;
   }
-  required string socket_descriptor = 1;
-  required How how = 2;
-  required int64 send_offset = 3;
+ string socket_descriptor = 1;
+ How how = 2;
+ int64 send_offset = 3;
 }
 
 message ShutDownReply {
@@ -354,8 +354,8 @@ message ShutDownReply {
 
 
 message CloseRequest {
-  required string socket_descriptor = 1;
-  optional int64 send_offset = 2 [default=-1];
+ string socket_descriptor = 1;
+  optional int64 send_offset = 2 ;
 }
 
 message CloseReply {
@@ -364,12 +364,12 @@ message CloseReply {
 
 
 message SendRequest {
-  required string socket_descriptor = 1;
-  required bytes data = 2 [ctype=CORD];
-  required int64 stream_offset = 3;
-  optional int32 flags = 4 [default=0];
+ string socket_descriptor = 1;
+ bytes data = 2 [ctype=CORD];
+ int64 stream_offset = 3;
+  optional int32 flags = 4 ;
   optional AddressPort send_to = 5;
-  optional double timeout_seconds = 6 [default=-1];
+  optional double timeout_seconds = 6 ;
 }
 
 message SendReply {
@@ -379,13 +379,14 @@ message SendReply {
 
 message ReceiveRequest {
   enum Flags {
+    NONE = 0;
     MSG_OOB = 1;
     MSG_PEEK = 2;
   }
-  required string socket_descriptor = 1;
-  required int32 data_size = 2;
-  optional int32 flags = 3 [default=0];
-  optional double timeout_seconds = 5 [default=-1];
+ string socket_descriptor = 1;
+ int32 data_size = 2;
+  optional int32 flags = 3 ;
+  optional double timeout_seconds = 5 ;
 }
 
 message ReceiveReply {
@@ -416,14 +417,14 @@ message PollEvent {
     SOCKET_POLLRDHUP = 8192;
   };
 
-  required string socket_descriptor = 1;
-  required int32 requested_events = 2;
-  required int32 observed_events = 3;
+ string socket_descriptor = 1;
+ int32 requested_events = 2;
+ int32 observed_events = 3;
 }
 
 message PollRequest {
   repeated PollEvent events = 1;
-  optional double timeout_seconds = 2 [default=-1];
+  optional double timeout_seconds = 2 ;
 }
 
 message PollReply {
@@ -431,12 +432,13 @@ message PollReply {
 }
 
 message ResolveRequest {
-  required string name = 1;
+ string name = 1;
   repeated CreateSocketRequest.SocketFamily address_families = 2;
 }
 
 message ResolveReply {
   enum ErrorCode {
+    NONE = 0;
     SOCKET_EAI_ADDRFAMILY = 1;
     SOCKET_EAI_AGAIN = 2;
     SOCKET_EAI_BADFLAGS = 3;
diff --git a/internal/system/system_service.pb.go b/internal/system/system_service.pb.go
index 9ff458ed..58ac6f11 100644
--- a/internal/system/system_service.pb.go
+++ b/internal/system/system_service.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/system/system_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: system_service.proto
 
 package system
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 SystemServiceError_ErrorCode int32
 
@@ -27,336 +29,545 @@ const (
 	SystemServiceError_LIMIT_REACHED    SystemServiceError_ErrorCode = 3
 )
 
-var SystemServiceError_ErrorCode_name = map[int32]string{
-	0: "OK",
-	1: "INTERNAL_ERROR",
-	2: "BACKEND_REQUIRED",
-	3: "LIMIT_REACHED",
-}
-var SystemServiceError_ErrorCode_value = map[string]int32{
-	"OK":               0,
-	"INTERNAL_ERROR":   1,
-	"BACKEND_REQUIRED": 2,
-	"LIMIT_REACHED":    3,
-}
+// Enum value maps for SystemServiceError_ErrorCode.
+var (
+	SystemServiceError_ErrorCode_name = map[int32]string{
+		0: "OK",
+		1: "INTERNAL_ERROR",
+		2: "BACKEND_REQUIRED",
+		3: "LIMIT_REACHED",
+	}
+	SystemServiceError_ErrorCode_value = map[string]int32{
+		"OK":               0,
+		"INTERNAL_ERROR":   1,
+		"BACKEND_REQUIRED": 2,
+		"LIMIT_REACHED":    3,
+	}
+)
 
 func (x SystemServiceError_ErrorCode) Enum() *SystemServiceError_ErrorCode {
 	p := new(SystemServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x SystemServiceError_ErrorCode) String() string {
-	return proto.EnumName(SystemServiceError_ErrorCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *SystemServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SystemServiceError_ErrorCode_value, data, "SystemServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = SystemServiceError_ErrorCode(value)
-	return nil
-}
-func (SystemServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_system_service_ccf41ec210fc59eb, []int{0, 0}
+
+func (SystemServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_system_service_proto_enumTypes[0].Descriptor()
 }
 
-type SystemServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (SystemServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_system_service_proto_enumTypes[0]
 }
 
-func (m *SystemServiceError) Reset()         { *m = SystemServiceError{} }
-func (m *SystemServiceError) String() string { return proto.CompactTextString(m) }
-func (*SystemServiceError) ProtoMessage()    {}
-func (*SystemServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_system_service_ccf41ec210fc59eb, []int{0}
+func (x SystemServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *SystemServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SystemServiceError.Unmarshal(m, b)
+
+// Deprecated: Use SystemServiceError_ErrorCode.Descriptor instead.
+func (SystemServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
+	return file_system_service_proto_rawDescGZIP(), []int{0, 0}
 }
-func (m *SystemServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SystemServiceError.Marshal(b, m, deterministic)
+
+type SystemServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (dst *SystemServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SystemServiceError.Merge(dst, src)
+
+func (x *SystemServiceError) Reset() {
+	*x = SystemServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_system_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SystemServiceError) XXX_Size() int {
-	return xxx_messageInfo_SystemServiceError.Size(m)
+
+func (x *SystemServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SystemServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_SystemServiceError.DiscardUnknown(m)
+
+func (*SystemServiceError) ProtoMessage() {}
+
+func (x *SystemServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_system_service_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)
 }
 
-var xxx_messageInfo_SystemServiceError proto.InternalMessageInfo
+// Deprecated: Use SystemServiceError.ProtoReflect.Descriptor instead.
+func (*SystemServiceError) Descriptor() ([]byte, []int) {
+	return file_system_service_proto_rawDescGZIP(), []int{0}
+}
 
 type SystemStat struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Instaneous value of this stat.
-	Current *float64 `protobuf:"fixed64,1,opt,name=current" json:"current,omitempty"`
+	Current *float64 `protobuf:"fixed64,1,opt,name=current,proto3,oneof" json:"current,omitempty"`
 	// Average over time, if this stat has an instaneous value.
-	Average1M  *float64 `protobuf:"fixed64,3,opt,name=average1m" json:"average1m,omitempty"`
-	Average10M *float64 `protobuf:"fixed64,4,opt,name=average10m" json:"average10m,omitempty"`
+	Average1M  *float64 `protobuf:"fixed64,3,opt,name=average1m,proto3,oneof" json:"average1m,omitempty"`
+	Average10M *float64 `protobuf:"fixed64,4,opt,name=average10m,proto3,oneof" json:"average10m,omitempty"`
 	// Total value, if the stat accumulates over time.
-	Total *float64 `protobuf:"fixed64,2,opt,name=total" json:"total,omitempty"`
+	Total *float64 `protobuf:"fixed64,2,opt,name=total,proto3,oneof" json:"total,omitempty"`
 	// Rate over time, if this stat accumulates.
-	Rate1M               *float64 `protobuf:"fixed64,5,opt,name=rate1m" json:"rate1m,omitempty"`
-	Rate10M              *float64 `protobuf:"fixed64,6,opt,name=rate10m" json:"rate10m,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Rate1M  *float64 `protobuf:"fixed64,5,opt,name=rate1m,proto3,oneof" json:"rate1m,omitempty"`
+	Rate10M *float64 `protobuf:"fixed64,6,opt,name=rate10m,proto3,oneof" json:"rate10m,omitempty"`
 }
 
-func (m *SystemStat) Reset()         { *m = SystemStat{} }
-func (m *SystemStat) String() string { return proto.CompactTextString(m) }
-func (*SystemStat) ProtoMessage()    {}
-func (*SystemStat) Descriptor() ([]byte, []int) {
-	return fileDescriptor_system_service_ccf41ec210fc59eb, []int{1}
-}
-func (m *SystemStat) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SystemStat.Unmarshal(m, b)
-}
-func (m *SystemStat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SystemStat.Marshal(b, m, deterministic)
-}
-func (dst *SystemStat) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SystemStat.Merge(dst, src)
+func (x *SystemStat) Reset() {
+	*x = SystemStat{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_system_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *SystemStat) XXX_Size() int {
-	return xxx_messageInfo_SystemStat.Size(m)
+
+func (x *SystemStat) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *SystemStat) XXX_DiscardUnknown() {
-	xxx_messageInfo_SystemStat.DiscardUnknown(m)
+
+func (*SystemStat) ProtoMessage() {}
+
+func (x *SystemStat) ProtoReflect() protoreflect.Message {
+	mi := &file_system_service_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)
 }
 
-var xxx_messageInfo_SystemStat proto.InternalMessageInfo
+// Deprecated: Use SystemStat.ProtoReflect.Descriptor instead.
+func (*SystemStat) Descriptor() ([]byte, []int) {
+	return file_system_service_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *SystemStat) GetCurrent() float64 {
-	if m != nil && m.Current != nil {
-		return *m.Current
+func (x *SystemStat) GetCurrent() float64 {
+	if x != nil && x.Current != nil {
+		return *x.Current
 	}
 	return 0
 }
 
-func (m *SystemStat) GetAverage1M() float64 {
-	if m != nil && m.Average1M != nil {
-		return *m.Average1M
+func (x *SystemStat) GetAverage1M() float64 {
+	if x != nil && x.Average1M != nil {
+		return *x.Average1M
 	}
 	return 0
 }
 
-func (m *SystemStat) GetAverage10M() float64 {
-	if m != nil && m.Average10M != nil {
-		return *m.Average10M
+func (x *SystemStat) GetAverage10M() float64 {
+	if x != nil && x.Average10M != nil {
+		return *x.Average10M
 	}
 	return 0
 }
 
-func (m *SystemStat) GetTotal() float64 {
-	if m != nil && m.Total != nil {
-		return *m.Total
+func (x *SystemStat) GetTotal() float64 {
+	if x != nil && x.Total != nil {
+		return *x.Total
 	}
 	return 0
 }
 
-func (m *SystemStat) GetRate1M() float64 {
-	if m != nil && m.Rate1M != nil {
-		return *m.Rate1M
+func (x *SystemStat) GetRate1M() float64 {
+	if x != nil && x.Rate1M != nil {
+		return *x.Rate1M
 	}
 	return 0
 }
 
-func (m *SystemStat) GetRate10M() float64 {
-	if m != nil && m.Rate10M != nil {
-		return *m.Rate10M
+func (x *SystemStat) GetRate10M() float64 {
+	if x != nil && x.Rate10M != nil {
+		return *x.Rate10M
 	}
 	return 0
 }
 
 type GetSystemStatsRequest struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *GetSystemStatsRequest) Reset()         { *m = GetSystemStatsRequest{} }
-func (m *GetSystemStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetSystemStatsRequest) ProtoMessage()    {}
-func (*GetSystemStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_system_service_ccf41ec210fc59eb, []int{2}
-}
-func (m *GetSystemStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSystemStatsRequest.Unmarshal(m, b)
-}
-func (m *GetSystemStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSystemStatsRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetSystemStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSystemStatsRequest.Merge(dst, src)
+func (x *GetSystemStatsRequest) Reset() {
+	*x = GetSystemStatsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_system_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetSystemStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetSystemStatsRequest.Size(m)
+
+func (x *GetSystemStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetSystemStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSystemStatsRequest.DiscardUnknown(m)
+
+func (*GetSystemStatsRequest) ProtoMessage() {}
+
+func (x *GetSystemStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_system_service_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)
 }
 
-var xxx_messageInfo_GetSystemStatsRequest proto.InternalMessageInfo
+// Deprecated: Use GetSystemStatsRequest.ProtoReflect.Descriptor instead.
+func (*GetSystemStatsRequest) Descriptor() ([]byte, []int) {
+	return file_system_service_proto_rawDescGZIP(), []int{2}
+}
 
 type GetSystemStatsResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// CPU used by this instance, in mcycles.
-	Cpu *SystemStat `protobuf:"bytes,1,opt,name=cpu" json:"cpu,omitempty"`
+	Cpu *SystemStat `protobuf:"bytes,1,opt,name=cpu,proto3,oneof" json:"cpu,omitempty"`
 	// Physical memory (RAM) used by this instance, in megabytes.
-	Memory               *SystemStat `protobuf:"bytes,2,opt,name=memory" json:"memory,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	Memory *SystemStat `protobuf:"bytes,2,opt,name=memory,proto3,oneof" json:"memory,omitempty"`
 }
 
-func (m *GetSystemStatsResponse) Reset()         { *m = GetSystemStatsResponse{} }
-func (m *GetSystemStatsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetSystemStatsResponse) ProtoMessage()    {}
-func (*GetSystemStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_system_service_ccf41ec210fc59eb, []int{3}
-}
-func (m *GetSystemStatsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSystemStatsResponse.Unmarshal(m, b)
-}
-func (m *GetSystemStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSystemStatsResponse.Marshal(b, m, deterministic)
-}
-func (dst *GetSystemStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSystemStatsResponse.Merge(dst, src)
+func (x *GetSystemStatsResponse) Reset() {
+	*x = GetSystemStatsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_system_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetSystemStatsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetSystemStatsResponse.Size(m)
+
+func (x *GetSystemStatsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetSystemStatsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSystemStatsResponse.DiscardUnknown(m)
+
+func (*GetSystemStatsResponse) ProtoMessage() {}
+
+func (x *GetSystemStatsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_system_service_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)
 }
 
-var xxx_messageInfo_GetSystemStatsResponse proto.InternalMessageInfo
+// Deprecated: Use GetSystemStatsResponse.ProtoReflect.Descriptor instead.
+func (*GetSystemStatsResponse) Descriptor() ([]byte, []int) {
+	return file_system_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *GetSystemStatsResponse) GetCpu() *SystemStat {
-	if m != nil {
-		return m.Cpu
+func (x *GetSystemStatsResponse) GetCpu() *SystemStat {
+	if x != nil {
+		return x.Cpu
 	}
 	return nil
 }
 
-func (m *GetSystemStatsResponse) GetMemory() *SystemStat {
-	if m != nil {
-		return m.Memory
+func (x *GetSystemStatsResponse) GetMemory() *SystemStat {
+	if x != nil {
+		return x.Memory
 	}
 	return nil
 }
 
 type StartBackgroundRequestRequest struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *StartBackgroundRequestRequest) Reset()         { *m = StartBackgroundRequestRequest{} }
-func (m *StartBackgroundRequestRequest) String() string { return proto.CompactTextString(m) }
-func (*StartBackgroundRequestRequest) ProtoMessage()    {}
-func (*StartBackgroundRequestRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_system_service_ccf41ec210fc59eb, []int{4}
-}
-func (m *StartBackgroundRequestRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StartBackgroundRequestRequest.Unmarshal(m, b)
-}
-func (m *StartBackgroundRequestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StartBackgroundRequestRequest.Marshal(b, m, deterministic)
-}
-func (dst *StartBackgroundRequestRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StartBackgroundRequestRequest.Merge(dst, src)
+func (x *StartBackgroundRequestRequest) Reset() {
+	*x = StartBackgroundRequestRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_system_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *StartBackgroundRequestRequest) XXX_Size() int {
-	return xxx_messageInfo_StartBackgroundRequestRequest.Size(m)
+
+func (x *StartBackgroundRequestRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *StartBackgroundRequestRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StartBackgroundRequestRequest.DiscardUnknown(m)
+
+func (*StartBackgroundRequestRequest) ProtoMessage() {}
+
+func (x *StartBackgroundRequestRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_system_service_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)
 }
 
-var xxx_messageInfo_StartBackgroundRequestRequest proto.InternalMessageInfo
+// Deprecated: Use StartBackgroundRequestRequest.ProtoReflect.Descriptor instead.
+func (*StartBackgroundRequestRequest) Descriptor() ([]byte, []int) {
+	return file_system_service_proto_rawDescGZIP(), []int{4}
+}
 
 type StartBackgroundRequestResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Every /_ah/background request will have an X-AppEngine-BackgroundRequest
 	// header, whose value will be equal to this parameter, the request_id.
-	RequestId            *string  `protobuf:"bytes,1,opt,name=request_id,json=requestId" json:"request_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RequestId *string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3,oneof" json:"request_id,omitempty"`
 }
 
-func (m *StartBackgroundRequestResponse) Reset()         { *m = StartBackgroundRequestResponse{} }
-func (m *StartBackgroundRequestResponse) String() string { return proto.CompactTextString(m) }
-func (*StartBackgroundRequestResponse) ProtoMessage()    {}
-func (*StartBackgroundRequestResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_system_service_ccf41ec210fc59eb, []int{5}
-}
-func (m *StartBackgroundRequestResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StartBackgroundRequestResponse.Unmarshal(m, b)
-}
-func (m *StartBackgroundRequestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StartBackgroundRequestResponse.Marshal(b, m, deterministic)
-}
-func (dst *StartBackgroundRequestResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StartBackgroundRequestResponse.Merge(dst, src)
+func (x *StartBackgroundRequestResponse) Reset() {
+	*x = StartBackgroundRequestResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_system_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *StartBackgroundRequestResponse) XXX_Size() int {
-	return xxx_messageInfo_StartBackgroundRequestResponse.Size(m)
+
+func (x *StartBackgroundRequestResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *StartBackgroundRequestResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StartBackgroundRequestResponse.DiscardUnknown(m)
+
+func (*StartBackgroundRequestResponse) ProtoMessage() {}
+
+func (x *StartBackgroundRequestResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_system_service_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)
 }
 
-var xxx_messageInfo_StartBackgroundRequestResponse proto.InternalMessageInfo
+// Deprecated: Use StartBackgroundRequestResponse.ProtoReflect.Descriptor instead.
+func (*StartBackgroundRequestResponse) Descriptor() ([]byte, []int) {
+	return file_system_service_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *StartBackgroundRequestResponse) GetRequestId() string {
-	if m != nil && m.RequestId != nil {
-		return *m.RequestId
+func (x *StartBackgroundRequestResponse) GetRequestId() string {
+	if x != nil && x.RequestId != nil {
+		return *x.RequestId
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*SystemServiceError)(nil), "appengine.SystemServiceError")
-	proto.RegisterType((*SystemStat)(nil), "appengine.SystemStat")
-	proto.RegisterType((*GetSystemStatsRequest)(nil), "appengine.GetSystemStatsRequest")
-	proto.RegisterType((*GetSystemStatsResponse)(nil), "appengine.GetSystemStatsResponse")
-	proto.RegisterType((*StartBackgroundRequestRequest)(nil), "appengine.StartBackgroundRequestRequest")
-	proto.RegisterType((*StartBackgroundRequestResponse)(nil), "appengine.StartBackgroundRequestResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/system/system_service.proto", fileDescriptor_system_service_ccf41ec210fc59eb)
-}
-
-var fileDescriptor_system_service_ccf41ec210fc59eb = []byte{
-	// 377 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x4f, 0x8f, 0x93, 0x40,
-	0x18, 0xc6, 0xa5, 0x75, 0x51, 0x5e, 0xa3, 0xc1, 0xc9, 0xee, 0xca, 0xc1, 0x5d, 0x0d, 0x17, 0xbd,
-	0x48, 0x57, 0xbf, 0x80, 0xf6, 0xcf, 0x44, 0x49, 0x6b, 0xab, 0xd3, 0x7a, 0xf1, 0x42, 0x26, 0xf0,
-	0x3a, 0x21, 0xc2, 0x0c, 0x0e, 0x43, 0x93, 0x7e, 0x27, 0x3f, 0xa4, 0xe9, 0x30, 0x6d, 0xcd, 0x26,
-	0x3d, 0x31, 0xcf, 0xf3, 0xfc, 0x02, 0x3f, 0x08, 0xf0, 0x49, 0x28, 0x25, 0x2a, 0x4c, 0x84, 0xaa,
-	0xb8, 0x14, 0x89, 0xd2, 0x62, 0xc4, 0x9b, 0x06, 0xa5, 0x28, 0x25, 0x8e, 0x4a, 0x69, 0x50, 0x4b,
-	0x5e, 0x8d, 0xda, 0x5d, 0x6b, 0xb0, 0x76, 0x97, 0xac, 0x45, 0xbd, 0x2d, 0x73, 0x4c, 0x1a, 0xad,
-	0x8c, 0x22, 0xc1, 0x91, 0x8f, 0x7f, 0x01, 0x59, 0x5b, 0x64, 0xdd, 0x13, 0x54, 0x6b, 0xa5, 0xe3,
-	0x6f, 0x10, 0xd8, 0xc3, 0x54, 0x15, 0x48, 0x7c, 0x18, 0xac, 0xe6, 0xe1, 0x03, 0x42, 0xe0, 0x59,
-	0xba, 0xdc, 0x50, 0xb6, 0x1c, 0x2f, 0x32, 0xca, 0xd8, 0x8a, 0x85, 0x1e, 0xb9, 0x84, 0x70, 0x32,
-	0x9e, 0xce, 0xe9, 0x72, 0x96, 0x31, 0xfa, 0xfd, 0x47, 0xca, 0xe8, 0x2c, 0x1c, 0x90, 0xe7, 0xf0,
-	0x74, 0x91, 0x7e, 0x4d, 0x37, 0x19, 0xa3, 0xe3, 0xe9, 0x17, 0x3a, 0x0b, 0x87, 0xf1, 0x5f, 0x0f,
-	0xc0, 0x3d, 0xc8, 0x70, 0x43, 0x22, 0x78, 0x94, 0x77, 0x5a, 0xa3, 0x34, 0x91, 0xf7, 0xda, 0x7b,
-	0xeb, 0xb1, 0x43, 0x24, 0x2f, 0x21, 0xe0, 0x5b, 0xd4, 0x5c, 0xe0, 0xfb, 0x3a, 0x1a, 0xda, 0xed,
-	0x54, 0x90, 0x5b, 0x80, 0x43, 0xb8, 0xab, 0xa3, 0x87, 0x76, 0xfe, 0xaf, 0x21, 0x97, 0x70, 0x61,
-	0x94, 0xe1, 0x55, 0x34, 0xb0, 0x53, 0x1f, 0xc8, 0x35, 0xf8, 0x9a, 0x9b, 0xfd, 0x0d, 0x2f, 0x6c,
-	0xed, 0xd2, 0xde, 0xc2, 0x9e, 0xee, 0xea, 0xc8, 0xef, 0x2d, 0x5c, 0x8c, 0x5f, 0xc0, 0xd5, 0x67,
-	0x34, 0x27, 0xe1, 0x96, 0xe1, 0x9f, 0x0e, 0x5b, 0x13, 0x37, 0x70, 0x7d, 0x7f, 0x68, 0x1b, 0x25,
-	0x5b, 0x24, 0x6f, 0x60, 0x98, 0x37, 0x9d, 0x7d, 0x9d, 0x27, 0x1f, 0xae, 0x92, 0xe3, 0x27, 0x4e,
-	0x4e, 0x30, 0xdb, 0x13, 0xe4, 0x1d, 0xf8, 0x35, 0xd6, 0x4a, 0xef, 0xac, 0xe4, 0x59, 0xd6, 0x41,
-	0xf1, 0x2b, 0xb8, 0x59, 0x1b, 0xae, 0xcd, 0x84, 0xe7, 0xbf, 0x85, 0x56, 0x9d, 0x2c, 0x9c, 0xcb,
-	0x41, 0xe9, 0x23, 0xdc, 0x9e, 0x03, 0x9c, 0xda, 0x0d, 0x80, 0xee, 0xab, 0xac, 0x2c, 0xac, 0x61,
-	0xc0, 0x02, 0xd7, 0xa4, 0xc5, 0xe4, 0xf1, 0x4f, 0xbf, 0xff, 0x4d, 0xfe, 0x05, 0x00, 0x00, 0xff,
-	0xff, 0x56, 0x5d, 0x5e, 0xc3, 0x5b, 0x02, 0x00, 0x00,
+var File_system_service_proto protoreflect.FileDescriptor
+
+var file_system_service_proto_rawDesc = []byte{
+	0x0a, 0x14, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x22, 0x66, 0x0a, 0x12, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69,
+	0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x50, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72,
+	0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e,
+	0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01,
+	0x12, 0x14, 0x0a, 0x10, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55,
+	0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f,
+	0x52, 0x45, 0x41, 0x43, 0x48, 0x45, 0x44, 0x10, 0x03, 0x22, 0x94, 0x02, 0x0a, 0x0a, 0x53, 0x79,
+	0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72,
+	0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x07, 0x63, 0x75, 0x72,
+	0x72, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x61, 0x76, 0x65, 0x72, 0x61,
+	0x67, 0x65, 0x31, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x09, 0x61, 0x76,
+	0x65, 0x72, 0x61, 0x67, 0x65, 0x31, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x61, 0x76,
+	0x65, 0x72, 0x61, 0x67, 0x65, 0x31, 0x30, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02,
+	0x52, 0x0a, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x31, 0x30, 0x6d, 0x88, 0x01, 0x01, 0x12,
+	0x19, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03,
+	0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x61,
+	0x74, 0x65, 0x31, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48, 0x04, 0x52, 0x06, 0x72, 0x61,
+	0x74, 0x65, 0x31, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x72, 0x61, 0x74, 0x65, 0x31,
+	0x30, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x48, 0x05, 0x52, 0x07, 0x72, 0x61, 0x74, 0x65,
+	0x31, 0x30, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65,
+	0x6e, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x31, 0x6d,
+	0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x31, 0x30, 0x6d, 0x42,
+	0x08, 0x0a, 0x06, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x61,
+	0x74, 0x65, 0x31, 0x6d, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x31, 0x30, 0x6d,
+	0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61,
+	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x16, 0x47, 0x65,
+	0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x79,
+	0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x48, 0x00, 0x52, 0x03, 0x63, 0x70, 0x75, 0x88,
+	0x01, 0x01, 0x12, 0x32, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53,
+	0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x48, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x6d,
+	0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x70, 0x75, 0x42, 0x09,
+	0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x74, 0x61,
+	0x72, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x1e, 0x53, 0x74,
+	0x61, 0x72, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0a,
+	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01,
+	0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x42,
+	0x2d, 0x5a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
+	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69,
+	0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x62, 0x06,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_system_service_proto_rawDescOnce sync.Once
+	file_system_service_proto_rawDescData = file_system_service_proto_rawDesc
+)
+
+func file_system_service_proto_rawDescGZIP() []byte {
+	file_system_service_proto_rawDescOnce.Do(func() {
+		file_system_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_system_service_proto_rawDescData)
+	})
+	return file_system_service_proto_rawDescData
+}
+
+var file_system_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_system_service_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_system_service_proto_goTypes = []interface{}{
+	(SystemServiceError_ErrorCode)(0),      // 0: appengine.SystemServiceError.ErrorCode
+	(*SystemServiceError)(nil),             // 1: appengine.SystemServiceError
+	(*SystemStat)(nil),                     // 2: appengine.SystemStat
+	(*GetSystemStatsRequest)(nil),          // 3: appengine.GetSystemStatsRequest
+	(*GetSystemStatsResponse)(nil),         // 4: appengine.GetSystemStatsResponse
+	(*StartBackgroundRequestRequest)(nil),  // 5: appengine.StartBackgroundRequestRequest
+	(*StartBackgroundRequestResponse)(nil), // 6: appengine.StartBackgroundRequestResponse
+}
+var file_system_service_proto_depIdxs = []int32{
+	2, // 0: appengine.GetSystemStatsResponse.cpu:type_name -> appengine.SystemStat
+	2, // 1: appengine.GetSystemStatsResponse.memory:type_name -> appengine.SystemStat
+	2, // [2:2] is the sub-list for method output_type
+	2, // [2:2] is the sub-list for method input_type
+	2, // [2:2] is the sub-list for extension type_name
+	2, // [2:2] is the sub-list for extension extendee
+	0, // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_system_service_proto_init() }
+func file_system_service_proto_init() {
+	if File_system_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_system_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SystemServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_system_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SystemStat); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_system_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSystemStatsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_system_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSystemStatsResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_system_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StartBackgroundRequestRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_system_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StartBackgroundRequestResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_system_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_system_service_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	file_system_service_proto_msgTypes[5].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_system_service_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   6,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_system_service_proto_goTypes,
+		DependencyIndexes: file_system_service_proto_depIdxs,
+		EnumInfos:         file_system_service_proto_enumTypes,
+		MessageInfos:      file_system_service_proto_msgTypes,
+	}.Build()
+	File_system_service_proto = out.File
+	file_system_service_proto_rawDesc = nil
+	file_system_service_proto_goTypes = nil
+	file_system_service_proto_depIdxs = nil
 }
diff --git a/internal/system/system_service.proto b/internal/system/system_service.proto
index 32c0bf85..926fee58 100644
--- a/internal/system/system_service.proto
+++ b/internal/system/system_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "system";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/system";
 
 package appengine;
 
diff --git a/internal/taskqueue/taskqueue_service.pb.go b/internal/taskqueue/taskqueue_service.pb.go
index 55465ccc..c0096988 100644
--- a/internal/taskqueue/taskqueue_service.pb.go
+++ b/internal/taskqueue/taskqueue_service.pb.go
@@ -1,23 +1,25 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/taskqueue/taskqueue_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: taskqueue_service.proto
 
 package taskqueue
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import datastore "google.golang.org/appengine/internal/datastore"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	datastore "google.golang.org/appengine/internal/datastore"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 TaskQueueServiceError_ErrorCode int32
 
@@ -55,87 +57,97 @@ const (
 	TaskQueueServiceError_DATASTORE_ERROR TaskQueueServiceError_ErrorCode = 10000
 )
 
-var TaskQueueServiceError_ErrorCode_name = map[int32]string{
-	0:     "OK",
-	1:     "UNKNOWN_QUEUE",
-	2:     "TRANSIENT_ERROR",
-	3:     "INTERNAL_ERROR",
-	4:     "TASK_TOO_LARGE",
-	5:     "INVALID_TASK_NAME",
-	6:     "INVALID_QUEUE_NAME",
-	7:     "INVALID_URL",
-	8:     "INVALID_QUEUE_RATE",
-	9:     "PERMISSION_DENIED",
-	10:    "TASK_ALREADY_EXISTS",
-	11:    "TOMBSTONED_TASK",
-	12:    "INVALID_ETA",
-	13:    "INVALID_REQUEST",
-	14:    "UNKNOWN_TASK",
-	15:    "TOMBSTONED_QUEUE",
-	16:    "DUPLICATE_TASK_NAME",
-	17:    "SKIPPED",
-	18:    "TOO_MANY_TASKS",
-	19:    "INVALID_PAYLOAD",
-	20:    "INVALID_RETRY_PARAMETERS",
-	21:    "INVALID_QUEUE_MODE",
-	22:    "ACL_LOOKUP_ERROR",
-	23:    "TRANSACTIONAL_REQUEST_TOO_LARGE",
-	24:    "INCORRECT_CREATOR_NAME",
-	25:    "TASK_LEASE_EXPIRED",
-	26:    "QUEUE_PAUSED",
-	27:    "INVALID_TAG",
-	10000: "DATASTORE_ERROR",
-}
-var TaskQueueServiceError_ErrorCode_value = map[string]int32{
-	"OK":                              0,
-	"UNKNOWN_QUEUE":                   1,
-	"TRANSIENT_ERROR":                 2,
-	"INTERNAL_ERROR":                  3,
-	"TASK_TOO_LARGE":                  4,
-	"INVALID_TASK_NAME":               5,
-	"INVALID_QUEUE_NAME":              6,
-	"INVALID_URL":                     7,
-	"INVALID_QUEUE_RATE":              8,
-	"PERMISSION_DENIED":               9,
-	"TASK_ALREADY_EXISTS":             10,
-	"TOMBSTONED_TASK":                 11,
-	"INVALID_ETA":                     12,
-	"INVALID_REQUEST":                 13,
-	"UNKNOWN_TASK":                    14,
-	"TOMBSTONED_QUEUE":                15,
-	"DUPLICATE_TASK_NAME":             16,
-	"SKIPPED":                         17,
-	"TOO_MANY_TASKS":                  18,
-	"INVALID_PAYLOAD":                 19,
-	"INVALID_RETRY_PARAMETERS":        20,
-	"INVALID_QUEUE_MODE":              21,
-	"ACL_LOOKUP_ERROR":                22,
-	"TRANSACTIONAL_REQUEST_TOO_LARGE": 23,
-	"INCORRECT_CREATOR_NAME":          24,
-	"TASK_LEASE_EXPIRED":              25,
-	"QUEUE_PAUSED":                    26,
-	"INVALID_TAG":                     27,
-	"DATASTORE_ERROR":                 10000,
-}
+// Enum value maps for TaskQueueServiceError_ErrorCode.
+var (
+	TaskQueueServiceError_ErrorCode_name = map[int32]string{
+		0:     "OK",
+		1:     "UNKNOWN_QUEUE",
+		2:     "TRANSIENT_ERROR",
+		3:     "INTERNAL_ERROR",
+		4:     "TASK_TOO_LARGE",
+		5:     "INVALID_TASK_NAME",
+		6:     "INVALID_QUEUE_NAME",
+		7:     "INVALID_URL",
+		8:     "INVALID_QUEUE_RATE",
+		9:     "PERMISSION_DENIED",
+		10:    "TASK_ALREADY_EXISTS",
+		11:    "TOMBSTONED_TASK",
+		12:    "INVALID_ETA",
+		13:    "INVALID_REQUEST",
+		14:    "UNKNOWN_TASK",
+		15:    "TOMBSTONED_QUEUE",
+		16:    "DUPLICATE_TASK_NAME",
+		17:    "SKIPPED",
+		18:    "TOO_MANY_TASKS",
+		19:    "INVALID_PAYLOAD",
+		20:    "INVALID_RETRY_PARAMETERS",
+		21:    "INVALID_QUEUE_MODE",
+		22:    "ACL_LOOKUP_ERROR",
+		23:    "TRANSACTIONAL_REQUEST_TOO_LARGE",
+		24:    "INCORRECT_CREATOR_NAME",
+		25:    "TASK_LEASE_EXPIRED",
+		26:    "QUEUE_PAUSED",
+		27:    "INVALID_TAG",
+		10000: "DATASTORE_ERROR",
+	}
+	TaskQueueServiceError_ErrorCode_value = map[string]int32{
+		"OK":                              0,
+		"UNKNOWN_QUEUE":                   1,
+		"TRANSIENT_ERROR":                 2,
+		"INTERNAL_ERROR":                  3,
+		"TASK_TOO_LARGE":                  4,
+		"INVALID_TASK_NAME":               5,
+		"INVALID_QUEUE_NAME":              6,
+		"INVALID_URL":                     7,
+		"INVALID_QUEUE_RATE":              8,
+		"PERMISSION_DENIED":               9,
+		"TASK_ALREADY_EXISTS":             10,
+		"TOMBSTONED_TASK":                 11,
+		"INVALID_ETA":                     12,
+		"INVALID_REQUEST":                 13,
+		"UNKNOWN_TASK":                    14,
+		"TOMBSTONED_QUEUE":                15,
+		"DUPLICATE_TASK_NAME":             16,
+		"SKIPPED":                         17,
+		"TOO_MANY_TASKS":                  18,
+		"INVALID_PAYLOAD":                 19,
+		"INVALID_RETRY_PARAMETERS":        20,
+		"INVALID_QUEUE_MODE":              21,
+		"ACL_LOOKUP_ERROR":                22,
+		"TRANSACTIONAL_REQUEST_TOO_LARGE": 23,
+		"INCORRECT_CREATOR_NAME":          24,
+		"TASK_LEASE_EXPIRED":              25,
+		"QUEUE_PAUSED":                    26,
+		"INVALID_TAG":                     27,
+		"DATASTORE_ERROR":                 10000,
+	}
+)
 
 func (x TaskQueueServiceError_ErrorCode) Enum() *TaskQueueServiceError_ErrorCode {
 	p := new(TaskQueueServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x TaskQueueServiceError_ErrorCode) String() string {
-	return proto.EnumName(TaskQueueServiceError_ErrorCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *TaskQueueServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(TaskQueueServiceError_ErrorCode_value, data, "TaskQueueServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = TaskQueueServiceError_ErrorCode(value)
-	return nil
+
+func (TaskQueueServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_taskqueue_service_proto_enumTypes[0].Descriptor()
+}
+
+func (TaskQueueServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_taskqueue_service_proto_enumTypes[0]
+}
+
+func (x TaskQueueServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use TaskQueueServiceError_ErrorCode.Descriptor instead.
 func (TaskQueueServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{0, 0}
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type TaskQueueMode_Mode int32
@@ -145,38 +157,49 @@ const (
 	TaskQueueMode_PULL TaskQueueMode_Mode = 1
 )
 
-var TaskQueueMode_Mode_name = map[int32]string{
-	0: "PUSH",
-	1: "PULL",
-}
-var TaskQueueMode_Mode_value = map[string]int32{
-	"PUSH": 0,
-	"PULL": 1,
-}
+// Enum value maps for TaskQueueMode_Mode.
+var (
+	TaskQueueMode_Mode_name = map[int32]string{
+		0: "PUSH",
+		1: "PULL",
+	}
+	TaskQueueMode_Mode_value = map[string]int32{
+		"PUSH": 0,
+		"PULL": 1,
+	}
+)
 
 func (x TaskQueueMode_Mode) Enum() *TaskQueueMode_Mode {
 	p := new(TaskQueueMode_Mode)
 	*p = x
 	return p
 }
+
 func (x TaskQueueMode_Mode) String() string {
-	return proto.EnumName(TaskQueueMode_Mode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *TaskQueueMode_Mode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(TaskQueueMode_Mode_value, data, "TaskQueueMode_Mode")
-	if err != nil {
-		return err
-	}
-	*x = TaskQueueMode_Mode(value)
-	return nil
+
+func (TaskQueueMode_Mode) Descriptor() protoreflect.EnumDescriptor {
+	return file_taskqueue_service_proto_enumTypes[1].Descriptor()
+}
+
+func (TaskQueueMode_Mode) Type() protoreflect.EnumType {
+	return &file_taskqueue_service_proto_enumTypes[1]
+}
+
+func (x TaskQueueMode_Mode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
+
+// Deprecated: Use TaskQueueMode_Mode.Descriptor instead.
 func (TaskQueueMode_Mode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{5, 0}
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{5, 0}
 }
 
 type TaskQueueAddRequest_RequestMethod int32
 
 const (
+	TaskQueueAddRequest_NONE   TaskQueueAddRequest_RequestMethod = 0
 	TaskQueueAddRequest_GET    TaskQueueAddRequest_RequestMethod = 1
 	TaskQueueAddRequest_POST   TaskQueueAddRequest_RequestMethod = 2
 	TaskQueueAddRequest_HEAD   TaskQueueAddRequest_RequestMethod = 3
@@ -184,2966 +207,4470 @@ const (
 	TaskQueueAddRequest_DELETE TaskQueueAddRequest_RequestMethod = 5
 )
 
-var TaskQueueAddRequest_RequestMethod_name = map[int32]string{
-	1: "GET",
-	2: "POST",
-	3: "HEAD",
-	4: "PUT",
-	5: "DELETE",
-}
-var TaskQueueAddRequest_RequestMethod_value = map[string]int32{
-	"GET":    1,
-	"POST":   2,
-	"HEAD":   3,
-	"PUT":    4,
-	"DELETE": 5,
-}
+// Enum value maps for TaskQueueAddRequest_RequestMethod.
+var (
+	TaskQueueAddRequest_RequestMethod_name = map[int32]string{
+		0: "NONE",
+		1: "GET",
+		2: "POST",
+		3: "HEAD",
+		4: "PUT",
+		5: "DELETE",
+	}
+	TaskQueueAddRequest_RequestMethod_value = map[string]int32{
+		"NONE":   0,
+		"GET":    1,
+		"POST":   2,
+		"HEAD":   3,
+		"PUT":    4,
+		"DELETE": 5,
+	}
+)
 
 func (x TaskQueueAddRequest_RequestMethod) Enum() *TaskQueueAddRequest_RequestMethod {
 	p := new(TaskQueueAddRequest_RequestMethod)
 	*p = x
 	return p
 }
+
 func (x TaskQueueAddRequest_RequestMethod) String() string {
-	return proto.EnumName(TaskQueueAddRequest_RequestMethod_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *TaskQueueAddRequest_RequestMethod) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(TaskQueueAddRequest_RequestMethod_value, data, "TaskQueueAddRequest_RequestMethod")
-	if err != nil {
-		return err
-	}
-	*x = TaskQueueAddRequest_RequestMethod(value)
-	return nil
+
+func (TaskQueueAddRequest_RequestMethod) Descriptor() protoreflect.EnumDescriptor {
+	return file_taskqueue_service_proto_enumTypes[2].Descriptor()
+}
+
+func (TaskQueueAddRequest_RequestMethod) Type() protoreflect.EnumType {
+	return &file_taskqueue_service_proto_enumTypes[2]
 }
+
+func (x TaskQueueAddRequest_RequestMethod) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use TaskQueueAddRequest_RequestMethod.Descriptor instead.
 func (TaskQueueAddRequest_RequestMethod) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{6, 0}
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{6, 0}
 }
 
-type TaskQueueQueryTasksResponse_Task_RequestMethod int32
+type TaskQueueQueryTasksResponse_TaskType_RequestMethod int32
 
 const (
-	TaskQueueQueryTasksResponse_Task_GET    TaskQueueQueryTasksResponse_Task_RequestMethod = 1
-	TaskQueueQueryTasksResponse_Task_POST   TaskQueueQueryTasksResponse_Task_RequestMethod = 2
-	TaskQueueQueryTasksResponse_Task_HEAD   TaskQueueQueryTasksResponse_Task_RequestMethod = 3
-	TaskQueueQueryTasksResponse_Task_PUT    TaskQueueQueryTasksResponse_Task_RequestMethod = 4
-	TaskQueueQueryTasksResponse_Task_DELETE TaskQueueQueryTasksResponse_Task_RequestMethod = 5
+	TaskQueueQueryTasksResponse_TaskType_NONE   TaskQueueQueryTasksResponse_TaskType_RequestMethod = 0
+	TaskQueueQueryTasksResponse_TaskType_GET    TaskQueueQueryTasksResponse_TaskType_RequestMethod = 1
+	TaskQueueQueryTasksResponse_TaskType_POST   TaskQueueQueryTasksResponse_TaskType_RequestMethod = 2
+	TaskQueueQueryTasksResponse_TaskType_HEAD   TaskQueueQueryTasksResponse_TaskType_RequestMethod = 3
+	TaskQueueQueryTasksResponse_TaskType_PUT    TaskQueueQueryTasksResponse_TaskType_RequestMethod = 4
+	TaskQueueQueryTasksResponse_TaskType_DELETE TaskQueueQueryTasksResponse_TaskType_RequestMethod = 5
 )
 
-var TaskQueueQueryTasksResponse_Task_RequestMethod_name = map[int32]string{
-	1: "GET",
-	2: "POST",
-	3: "HEAD",
-	4: "PUT",
-	5: "DELETE",
-}
-var TaskQueueQueryTasksResponse_Task_RequestMethod_value = map[string]int32{
-	"GET":    1,
-	"POST":   2,
-	"HEAD":   3,
-	"PUT":    4,
-	"DELETE": 5,
-}
+// Enum value maps for TaskQueueQueryTasksResponse_TaskType_RequestMethod.
+var (
+	TaskQueueQueryTasksResponse_TaskType_RequestMethod_name = map[int32]string{
+		0: "NONE",
+		1: "GET",
+		2: "POST",
+		3: "HEAD",
+		4: "PUT",
+		5: "DELETE",
+	}
+	TaskQueueQueryTasksResponse_TaskType_RequestMethod_value = map[string]int32{
+		"NONE":   0,
+		"GET":    1,
+		"POST":   2,
+		"HEAD":   3,
+		"PUT":    4,
+		"DELETE": 5,
+	}
+)
 
-func (x TaskQueueQueryTasksResponse_Task_RequestMethod) Enum() *TaskQueueQueryTasksResponse_Task_RequestMethod {
-	p := new(TaskQueueQueryTasksResponse_Task_RequestMethod)
+func (x TaskQueueQueryTasksResponse_TaskType_RequestMethod) Enum() *TaskQueueQueryTasksResponse_TaskType_RequestMethod {
+	p := new(TaskQueueQueryTasksResponse_TaskType_RequestMethod)
 	*p = x
 	return p
 }
-func (x TaskQueueQueryTasksResponse_Task_RequestMethod) String() string {
-	return proto.EnumName(TaskQueueQueryTasksResponse_Task_RequestMethod_name, int32(x))
-}
-func (x *TaskQueueQueryTasksResponse_Task_RequestMethod) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(TaskQueueQueryTasksResponse_Task_RequestMethod_value, data, "TaskQueueQueryTasksResponse_Task_RequestMethod")
-	if err != nil {
-		return err
-	}
-	*x = TaskQueueQueryTasksResponse_Task_RequestMethod(value)
-	return nil
-}
-func (TaskQueueQueryTasksResponse_Task_RequestMethod) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{30, 0, 0}
+
+func (x TaskQueueQueryTasksResponse_TaskType_RequestMethod) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type TaskQueueServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (TaskQueueQueryTasksResponse_TaskType_RequestMethod) Descriptor() protoreflect.EnumDescriptor {
+	return file_taskqueue_service_proto_enumTypes[3].Descriptor()
 }
 
-func (m *TaskQueueServiceError) Reset()         { *m = TaskQueueServiceError{} }
-func (m *TaskQueueServiceError) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueServiceError) ProtoMessage()    {}
-func (*TaskQueueServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{0}
+func (TaskQueueQueryTasksResponse_TaskType_RequestMethod) Type() protoreflect.EnumType {
+	return &file_taskqueue_service_proto_enumTypes[3]
 }
-func (m *TaskQueueServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueServiceError.Unmarshal(m, b)
+
+func (x TaskQueueQueryTasksResponse_TaskType_RequestMethod) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *TaskQueueServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueServiceError.Marshal(b, m, deterministic)
+
+// Deprecated: Use TaskQueueQueryTasksResponse_TaskType_RequestMethod.Descriptor instead.
+func (TaskQueueQueryTasksResponse_TaskType_RequestMethod) EnumDescriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{30, 0, 0}
 }
-func (dst *TaskQueueServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueServiceError.Merge(dst, src)
+
+type TaskQueueServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *TaskQueueServiceError) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueServiceError.Size(m)
+
+func (x *TaskQueueServiceError) Reset() {
+	*x = TaskQueueServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueServiceError.DiscardUnknown(m)
+
+func (x *TaskQueueServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueServiceError proto.InternalMessageInfo
+func (*TaskQueueServiceError) ProtoMessage() {}
 
-type TaskPayload struct {
-	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
-	proto.XXX_InternalExtensions `protobuf_messageset:"1" json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+func (x *TaskQueueServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-func (m *TaskPayload) Reset()         { *m = TaskPayload{} }
-func (m *TaskPayload) String() string { return proto.CompactTextString(m) }
-func (*TaskPayload) ProtoMessage()    {}
-func (*TaskPayload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{1}
+// Deprecated: Use TaskQueueServiceError.ProtoReflect.Descriptor instead.
+func (*TaskQueueServiceError) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *TaskPayload) MarshalJSON() ([]byte, error) {
-	return proto.MarshalMessageSetJSON(&m.XXX_InternalExtensions)
-}
-func (m *TaskPayload) UnmarshalJSON(buf []byte) error {
-	return proto.UnmarshalMessageSetJSON(buf, &m.XXX_InternalExtensions)
+type TaskPayload struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-var extRange_TaskPayload = []proto.ExtensionRange{
-	{Start: 10, End: 2147483646},
+func (x *TaskPayload) Reset() {
+	*x = TaskPayload{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-func (*TaskPayload) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_TaskPayload
-}
-func (m *TaskPayload) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskPayload.Unmarshal(m, b)
-}
-func (m *TaskPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskPayload.Marshal(b, m, deterministic)
-}
-func (dst *TaskPayload) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskPayload.Merge(dst, src)
-}
-func (m *TaskPayload) XXX_Size() int {
-	return xxx_messageInfo_TaskPayload.Size(m)
-}
-func (m *TaskPayload) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskPayload.DiscardUnknown(m)
+func (x *TaskPayload) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskPayload proto.InternalMessageInfo
+func (*TaskPayload) ProtoMessage() {}
 
-type TaskQueueRetryParameters struct {
-	RetryLimit           *int32   `protobuf:"varint,1,opt,name=retry_limit,json=retryLimit" json:"retry_limit,omitempty"`
-	AgeLimitSec          *int64   `protobuf:"varint,2,opt,name=age_limit_sec,json=ageLimitSec" json:"age_limit_sec,omitempty"`
-	MinBackoffSec        *float64 `protobuf:"fixed64,3,opt,name=min_backoff_sec,json=minBackoffSec,def=0.1" json:"min_backoff_sec,omitempty"`
-	MaxBackoffSec        *float64 `protobuf:"fixed64,4,opt,name=max_backoff_sec,json=maxBackoffSec,def=3600" json:"max_backoff_sec,omitempty"`
-	MaxDoublings         *int32   `protobuf:"varint,5,opt,name=max_doublings,json=maxDoublings,def=16" json:"max_doublings,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *TaskQueueRetryParameters) Reset()         { *m = TaskQueueRetryParameters{} }
-func (m *TaskQueueRetryParameters) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueRetryParameters) ProtoMessage()    {}
-func (*TaskQueueRetryParameters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{2}
-}
-func (m *TaskQueueRetryParameters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueRetryParameters.Unmarshal(m, b)
+func (x *TaskPayload) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
-func (m *TaskQueueRetryParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueRetryParameters.Marshal(b, m, deterministic)
+
+// Deprecated: Use TaskPayload.ProtoReflect.Descriptor instead.
+func (*TaskPayload) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{1}
 }
-func (dst *TaskQueueRetryParameters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueRetryParameters.Merge(dst, src)
+
+type TaskQueueRetryParameters struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	RetryLimit    *int32   `protobuf:"varint,1,opt,name=retry_limit,json=retryLimit,proto3,oneof" json:"retry_limit,omitempty"`
+	AgeLimitSec   *int64   `protobuf:"varint,2,opt,name=age_limit_sec,json=ageLimitSec,proto3,oneof" json:"age_limit_sec,omitempty"`
+	MinBackoffSec *float64 `protobuf:"fixed64,3,opt,name=min_backoff_sec,json=minBackoffSec,proto3,oneof" json:"min_backoff_sec,omitempty"`
+	MaxBackoffSec *float64 `protobuf:"fixed64,4,opt,name=max_backoff_sec,json=maxBackoffSec,proto3,oneof" json:"max_backoff_sec,omitempty"`
+	MaxDoublings  *int32   `protobuf:"varint,5,opt,name=max_doublings,json=maxDoublings,proto3,oneof" json:"max_doublings,omitempty"`
 }
-func (m *TaskQueueRetryParameters) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueRetryParameters.Size(m)
+
+func (x *TaskQueueRetryParameters) Reset() {
+	*x = TaskQueueRetryParameters{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueRetryParameters) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueRetryParameters.DiscardUnknown(m)
+
+func (x *TaskQueueRetryParameters) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueRetryParameters proto.InternalMessageInfo
+func (*TaskQueueRetryParameters) ProtoMessage() {}
+
+func (x *TaskQueueRetryParameters) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
+}
 
-const Default_TaskQueueRetryParameters_MinBackoffSec float64 = 0.1
-const Default_TaskQueueRetryParameters_MaxBackoffSec float64 = 3600
-const Default_TaskQueueRetryParameters_MaxDoublings int32 = 16
+// Deprecated: Use TaskQueueRetryParameters.ProtoReflect.Descriptor instead.
+func (*TaskQueueRetryParameters) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *TaskQueueRetryParameters) GetRetryLimit() int32 {
-	if m != nil && m.RetryLimit != nil {
-		return *m.RetryLimit
+func (x *TaskQueueRetryParameters) GetRetryLimit() int32 {
+	if x != nil && x.RetryLimit != nil {
+		return *x.RetryLimit
 	}
 	return 0
 }
 
-func (m *TaskQueueRetryParameters) GetAgeLimitSec() int64 {
-	if m != nil && m.AgeLimitSec != nil {
-		return *m.AgeLimitSec
+func (x *TaskQueueRetryParameters) GetAgeLimitSec() int64 {
+	if x != nil && x.AgeLimitSec != nil {
+		return *x.AgeLimitSec
 	}
 	return 0
 }
 
-func (m *TaskQueueRetryParameters) GetMinBackoffSec() float64 {
-	if m != nil && m.MinBackoffSec != nil {
-		return *m.MinBackoffSec
+func (x *TaskQueueRetryParameters) GetMinBackoffSec() float64 {
+	if x != nil && x.MinBackoffSec != nil {
+		return *x.MinBackoffSec
 	}
-	return Default_TaskQueueRetryParameters_MinBackoffSec
+	return 0
 }
 
-func (m *TaskQueueRetryParameters) GetMaxBackoffSec() float64 {
-	if m != nil && m.MaxBackoffSec != nil {
-		return *m.MaxBackoffSec
+func (x *TaskQueueRetryParameters) GetMaxBackoffSec() float64 {
+	if x != nil && x.MaxBackoffSec != nil {
+		return *x.MaxBackoffSec
 	}
-	return Default_TaskQueueRetryParameters_MaxBackoffSec
+	return 0
 }
 
-func (m *TaskQueueRetryParameters) GetMaxDoublings() int32 {
-	if m != nil && m.MaxDoublings != nil {
-		return *m.MaxDoublings
+func (x *TaskQueueRetryParameters) GetMaxDoublings() int32 {
+	if x != nil && x.MaxDoublings != nil {
+		return *x.MaxDoublings
 	}
-	return Default_TaskQueueRetryParameters_MaxDoublings
+	return 0
 }
 
 type TaskQueueAcl struct {
-	UserEmail            [][]byte `protobuf:"bytes,1,rep,name=user_email,json=userEmail" json:"user_email,omitempty"`
-	WriterEmail          [][]byte `protobuf:"bytes,2,rep,name=writer_email,json=writerEmail" json:"writer_email,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueAcl) Reset()         { *m = TaskQueueAcl{} }
-func (m *TaskQueueAcl) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueAcl) ProtoMessage()    {}
-func (*TaskQueueAcl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{3}
-}
-func (m *TaskQueueAcl) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueAcl.Unmarshal(m, b)
+	UserEmail   [][]byte `protobuf:"bytes,1,rep,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"`
+	WriterEmail [][]byte `protobuf:"bytes,2,rep,name=writer_email,json=writerEmail,proto3" json:"writer_email,omitempty"`
 }
-func (m *TaskQueueAcl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueAcl.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueAcl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueAcl.Merge(dst, src)
+
+func (x *TaskQueueAcl) Reset() {
+	*x = TaskQueueAcl{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueAcl) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueAcl.Size(m)
+
+func (x *TaskQueueAcl) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueAcl) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueAcl.DiscardUnknown(m)
+
+func (*TaskQueueAcl) ProtoMessage() {}
+
+func (x *TaskQueueAcl) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueAcl proto.InternalMessageInfo
+// Deprecated: Use TaskQueueAcl.ProtoReflect.Descriptor instead.
+func (*TaskQueueAcl) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *TaskQueueAcl) GetUserEmail() [][]byte {
-	if m != nil {
-		return m.UserEmail
+func (x *TaskQueueAcl) GetUserEmail() [][]byte {
+	if x != nil {
+		return x.UserEmail
 	}
 	return nil
 }
 
-func (m *TaskQueueAcl) GetWriterEmail() [][]byte {
-	if m != nil {
-		return m.WriterEmail
+func (x *TaskQueueAcl) GetWriterEmail() [][]byte {
+	if x != nil {
+		return x.WriterEmail
 	}
 	return nil
 }
 
 type TaskQueueHttpHeader struct {
-	Key                  []byte   `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
-	Value                []byte   `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueHttpHeader) Reset()         { *m = TaskQueueHttpHeader{} }
-func (m *TaskQueueHttpHeader) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueHttpHeader) ProtoMessage()    {}
-func (*TaskQueueHttpHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{4}
-}
-func (m *TaskQueueHttpHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueHttpHeader.Unmarshal(m, b)
+	Key   []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (m *TaskQueueHttpHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueHttpHeader.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueHttpHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueHttpHeader.Merge(dst, src)
+
+func (x *TaskQueueHttpHeader) Reset() {
+	*x = TaskQueueHttpHeader{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueHttpHeader) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueHttpHeader.Size(m)
+
+func (x *TaskQueueHttpHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueHttpHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueHttpHeader.DiscardUnknown(m)
+
+func (*TaskQueueHttpHeader) ProtoMessage() {}
+
+func (x *TaskQueueHttpHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueHttpHeader proto.InternalMessageInfo
+// Deprecated: Use TaskQueueHttpHeader.ProtoReflect.Descriptor instead.
+func (*TaskQueueHttpHeader) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{4}
+}
 
-func (m *TaskQueueHttpHeader) GetKey() []byte {
-	if m != nil {
-		return m.Key
+func (x *TaskQueueHttpHeader) GetKey() []byte {
+	if x != nil {
+		return x.Key
 	}
 	return nil
 }
 
-func (m *TaskQueueHttpHeader) GetValue() []byte {
-	if m != nil {
-		return m.Value
+func (x *TaskQueueHttpHeader) GetValue() []byte {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
 type TaskQueueMode struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *TaskQueueMode) Reset()         { *m = TaskQueueMode{} }
-func (m *TaskQueueMode) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueMode) ProtoMessage()    {}
-func (*TaskQueueMode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{5}
-}
-func (m *TaskQueueMode) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueMode.Unmarshal(m, b)
-}
-func (m *TaskQueueMode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueMode.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueMode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueMode.Merge(dst, src)
-}
-func (m *TaskQueueMode) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueMode.Size(m)
+func (x *TaskQueueMode) Reset() {
+	*x = TaskQueueMode{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueMode) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueMode.DiscardUnknown(m)
+
+func (x *TaskQueueMode) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueMode proto.InternalMessageInfo
+func (*TaskQueueMode) ProtoMessage() {}
 
-type TaskQueueAddRequest struct {
-	QueueName            []byte                             `protobuf:"bytes,1,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	TaskName             []byte                             `protobuf:"bytes,2,req,name=task_name,json=taskName" json:"task_name,omitempty"`
-	EtaUsec              *int64                             `protobuf:"varint,3,req,name=eta_usec,json=etaUsec" json:"eta_usec,omitempty"`
-	Method               *TaskQueueAddRequest_RequestMethod `protobuf:"varint,5,opt,name=method,enum=appengine.TaskQueueAddRequest_RequestMethod,def=2" json:"method,omitempty"`
-	Url                  []byte                             `protobuf:"bytes,4,opt,name=url" json:"url,omitempty"`
-	Header               []*TaskQueueAddRequest_Header      `protobuf:"group,6,rep,name=Header,json=header" json:"header,omitempty"`
-	Body                 []byte                             `protobuf:"bytes,9,opt,name=body" json:"body,omitempty"`
-	Transaction          *datastore.Transaction             `protobuf:"bytes,10,opt,name=transaction" json:"transaction,omitempty"`
-	AppId                []byte                             `protobuf:"bytes,11,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	Crontimetable        *TaskQueueAddRequest_CronTimetable `protobuf:"group,12,opt,name=CronTimetable,json=crontimetable" json:"crontimetable,omitempty"`
-	Description          []byte                             `protobuf:"bytes,15,opt,name=description" json:"description,omitempty"`
-	Payload              *TaskPayload                       `protobuf:"bytes,16,opt,name=payload" json:"payload,omitempty"`
-	RetryParameters      *TaskQueueRetryParameters          `protobuf:"bytes,17,opt,name=retry_parameters,json=retryParameters" json:"retry_parameters,omitempty"`
-	Mode                 *TaskQueueMode_Mode                `protobuf:"varint,18,opt,name=mode,enum=appengine.TaskQueueMode_Mode,def=0" json:"mode,omitempty"`
-	Tag                  []byte                             `protobuf:"bytes,19,opt,name=tag" json:"tag,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
-	XXX_unrecognized     []byte                             `json:"-"`
-	XXX_sizecache        int32                              `json:"-"`
-}
-
-func (m *TaskQueueAddRequest) Reset()         { *m = TaskQueueAddRequest{} }
-func (m *TaskQueueAddRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueAddRequest) ProtoMessage()    {}
-func (*TaskQueueAddRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{6}
-}
-func (m *TaskQueueAddRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueAddRequest.Unmarshal(m, b)
+func (x *TaskQueueMode) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
-func (m *TaskQueueAddRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueAddRequest.Marshal(b, m, deterministic)
+
+// Deprecated: Use TaskQueueMode.ProtoReflect.Descriptor instead.
+func (*TaskQueueMode) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{5}
 }
-func (dst *TaskQueueAddRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueAddRequest.Merge(dst, src)
+
+type TaskQueueAddRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	QueueName       []byte                                 `protobuf:"bytes,1,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	TaskName        []byte                                 `protobuf:"bytes,2,opt,name=task_name,json=taskName,proto3" json:"task_name,omitempty"`
+	EtaUsec         int64                                  `protobuf:"varint,3,opt,name=eta_usec,json=etaUsec,proto3" json:"eta_usec,omitempty"`
+	Method          *TaskQueueAddRequest_RequestMethod     `protobuf:"varint,5,opt,name=method,proto3,enum=appengine.TaskQueueAddRequest_RequestMethod,oneof" json:"method,omitempty"`
+	Url             []byte                                 `protobuf:"bytes,4,opt,name=url,proto3,oneof" json:"url,omitempty"`
+	Header          []*TaskQueueAddRequest_HeaderType      `protobuf:"bytes,6,rep,name=Header,proto3" json:"Header,omitempty"`
+	Body            []byte                                 `protobuf:"bytes,9,opt,name=body,proto3,oneof" json:"body,omitempty"`
+	Transaction     *datastore.Transaction                 `protobuf:"bytes,10,opt,name=transaction,proto3,oneof" json:"transaction,omitempty"`
+	AppId           []byte                                 `protobuf:"bytes,11,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
+	CronTimetable   *TaskQueueAddRequest_CronTimetableType `protobuf:"bytes,12,opt,name=CronTimetable,proto3,oneof" json:"CronTimetable,omitempty"`
+	Description     []byte                                 `protobuf:"bytes,15,opt,name=description,proto3,oneof" json:"description,omitempty"`
+	Payload         *TaskPayload                           `protobuf:"bytes,16,opt,name=payload,proto3,oneof" json:"payload,omitempty"`
+	RetryParameters *TaskQueueRetryParameters              `protobuf:"bytes,17,opt,name=retry_parameters,json=retryParameters,proto3,oneof" json:"retry_parameters,omitempty"`
+	Mode            *TaskQueueMode_Mode                    `protobuf:"varint,18,opt,name=mode,proto3,enum=appengine.TaskQueueMode_Mode,oneof" json:"mode,omitempty"`
+	Tag             []byte                                 `protobuf:"bytes,19,opt,name=tag,proto3,oneof" json:"tag,omitempty"`
 }
-func (m *TaskQueueAddRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueAddRequest.Size(m)
+
+func (x *TaskQueueAddRequest) Reset() {
+	*x = TaskQueueAddRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueAddRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueAddRequest.DiscardUnknown(m)
+
+func (x *TaskQueueAddRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueAddRequest proto.InternalMessageInfo
+func (*TaskQueueAddRequest) ProtoMessage() {}
 
-const Default_TaskQueueAddRequest_Method TaskQueueAddRequest_RequestMethod = TaskQueueAddRequest_POST
-const Default_TaskQueueAddRequest_Mode TaskQueueMode_Mode = TaskQueueMode_PUSH
+func (x *TaskQueueAddRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 TaskQueueAddRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueAddRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{6}
+}
 
-func (m *TaskQueueAddRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueueAddRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetTaskName() []byte {
-	if m != nil {
-		return m.TaskName
+func (x *TaskQueueAddRequest) GetTaskName() []byte {
+	if x != nil {
+		return x.TaskName
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetEtaUsec() int64 {
-	if m != nil && m.EtaUsec != nil {
-		return *m.EtaUsec
+func (x *TaskQueueAddRequest) GetEtaUsec() int64 {
+	if x != nil {
+		return x.EtaUsec
 	}
 	return 0
 }
 
-func (m *TaskQueueAddRequest) GetMethod() TaskQueueAddRequest_RequestMethod {
-	if m != nil && m.Method != nil {
-		return *m.Method
+func (x *TaskQueueAddRequest) GetMethod() TaskQueueAddRequest_RequestMethod {
+	if x != nil && x.Method != nil {
+		return *x.Method
 	}
-	return Default_TaskQueueAddRequest_Method
+	return TaskQueueAddRequest_NONE
 }
 
-func (m *TaskQueueAddRequest) GetUrl() []byte {
-	if m != nil {
-		return m.Url
+func (x *TaskQueueAddRequest) GetUrl() []byte {
+	if x != nil {
+		return x.Url
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetHeader() []*TaskQueueAddRequest_Header {
-	if m != nil {
-		return m.Header
+func (x *TaskQueueAddRequest) GetHeader() []*TaskQueueAddRequest_HeaderType {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetBody() []byte {
-	if m != nil {
-		return m.Body
+func (x *TaskQueueAddRequest) GetBody() []byte {
+	if x != nil {
+		return x.Body
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetTransaction() *datastore.Transaction {
-	if m != nil {
-		return m.Transaction
+func (x *TaskQueueAddRequest) GetTransaction() *datastore.Transaction {
+	if x != nil {
+		return x.Transaction
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueAddRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetCrontimetable() *TaskQueueAddRequest_CronTimetable {
-	if m != nil {
-		return m.Crontimetable
+func (x *TaskQueueAddRequest) GetCronTimetable() *TaskQueueAddRequest_CronTimetableType {
+	if x != nil {
+		return x.CronTimetable
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetDescription() []byte {
-	if m != nil {
-		return m.Description
+func (x *TaskQueueAddRequest) GetDescription() []byte {
+	if x != nil {
+		return x.Description
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetPayload() *TaskPayload {
-	if m != nil {
-		return m.Payload
+func (x *TaskQueueAddRequest) GetPayload() *TaskPayload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetRetryParameters() *TaskQueueRetryParameters {
-	if m != nil {
-		return m.RetryParameters
+func (x *TaskQueueAddRequest) GetRetryParameters() *TaskQueueRetryParameters {
+	if x != nil {
+		return x.RetryParameters
 	}
 	return nil
 }
 
-func (m *TaskQueueAddRequest) GetMode() TaskQueueMode_Mode {
-	if m != nil && m.Mode != nil {
-		return *m.Mode
+func (x *TaskQueueAddRequest) GetMode() TaskQueueMode_Mode {
+	if x != nil && x.Mode != nil {
+		return *x.Mode
 	}
-	return Default_TaskQueueAddRequest_Mode
+	return TaskQueueMode_PUSH
 }
 
-func (m *TaskQueueAddRequest) GetTag() []byte {
-	if m != nil {
-		return m.Tag
+func (x *TaskQueueAddRequest) GetTag() []byte {
+	if x != nil {
+		return x.Tag
 	}
 	return nil
 }
 
-type TaskQueueAddRequest_Header struct {
-	Key                  []byte   `protobuf:"bytes,7,req,name=key" json:"key,omitempty"`
-	Value                []byte   `protobuf:"bytes,8,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type TaskQueueAddResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueAddRequest_Header) Reset()         { *m = TaskQueueAddRequest_Header{} }
-func (m *TaskQueueAddRequest_Header) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueAddRequest_Header) ProtoMessage()    {}
-func (*TaskQueueAddRequest_Header) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{6, 0}
-}
-func (m *TaskQueueAddRequest_Header) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueAddRequest_Header.Unmarshal(m, b)
-}
-func (m *TaskQueueAddRequest_Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueAddRequest_Header.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueAddRequest_Header) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueAddRequest_Header.Merge(dst, src)
-}
-func (m *TaskQueueAddRequest_Header) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueAddRequest_Header.Size(m)
-}
-func (m *TaskQueueAddRequest_Header) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueAddRequest_Header.DiscardUnknown(m)
+	ChosenTaskName []byte `protobuf:"bytes,1,opt,name=chosen_task_name,json=chosenTaskName,proto3,oneof" json:"chosen_task_name,omitempty"`
 }
 
-var xxx_messageInfo_TaskQueueAddRequest_Header proto.InternalMessageInfo
-
-func (m *TaskQueueAddRequest_Header) GetKey() []byte {
-	if m != nil {
-		return m.Key
+func (x *TaskQueueAddResponse) Reset() {
+	*x = TaskQueueAddResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (m *TaskQueueAddRequest_Header) GetValue() []byte {
-	if m != nil {
-		return m.Value
-	}
-	return nil
+func (x *TaskQueueAddResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-type TaskQueueAddRequest_CronTimetable struct {
-	Schedule             []byte   `protobuf:"bytes,13,req,name=schedule" json:"schedule,omitempty"`
-	Timezone             []byte   `protobuf:"bytes,14,req,name=timezone" json:"timezone,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+func (*TaskQueueAddResponse) ProtoMessage() {}
 
-func (m *TaskQueueAddRequest_CronTimetable) Reset()         { *m = TaskQueueAddRequest_CronTimetable{} }
-func (m *TaskQueueAddRequest_CronTimetable) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueAddRequest_CronTimetable) ProtoMessage()    {}
-func (*TaskQueueAddRequest_CronTimetable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{6, 1}
-}
-func (m *TaskQueueAddRequest_CronTimetable) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueAddRequest_CronTimetable.Unmarshal(m, b)
-}
-func (m *TaskQueueAddRequest_CronTimetable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueAddRequest_CronTimetable.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueAddRequest_CronTimetable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueAddRequest_CronTimetable.Merge(dst, src)
-}
-func (m *TaskQueueAddRequest_CronTimetable) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueAddRequest_CronTimetable.Size(m)
-}
-func (m *TaskQueueAddRequest_CronTimetable) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueAddRequest_CronTimetable.DiscardUnknown(m)
+func (x *TaskQueueAddResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueAddRequest_CronTimetable proto.InternalMessageInfo
-
-func (m *TaskQueueAddRequest_CronTimetable) GetSchedule() []byte {
-	if m != nil {
-		return m.Schedule
-	}
-	return nil
+// Deprecated: Use TaskQueueAddResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueAddResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *TaskQueueAddRequest_CronTimetable) GetTimezone() []byte {
-	if m != nil {
-		return m.Timezone
+func (x *TaskQueueAddResponse) GetChosenTaskName() []byte {
+	if x != nil {
+		return x.ChosenTaskName
 	}
 	return nil
 }
 
-type TaskQueueAddResponse struct {
-	ChosenTaskName       []byte   `protobuf:"bytes,1,opt,name=chosen_task_name,json=chosenTaskName" json:"chosen_task_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type TaskQueueBulkAddRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueAddResponse) Reset()         { *m = TaskQueueAddResponse{} }
-func (m *TaskQueueAddResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueAddResponse) ProtoMessage()    {}
-func (*TaskQueueAddResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{7}
-}
-func (m *TaskQueueAddResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueAddResponse.Unmarshal(m, b)
+	AddRequest []*TaskQueueAddRequest `protobuf:"bytes,1,rep,name=add_request,json=addRequest,proto3" json:"add_request,omitempty"`
 }
-func (m *TaskQueueAddResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueAddResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueAddResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueAddResponse.Merge(dst, src)
-}
-func (m *TaskQueueAddResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueAddResponse.Size(m)
+
+func (x *TaskQueueBulkAddRequest) Reset() {
+	*x = TaskQueueBulkAddRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueAddResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueAddResponse.DiscardUnknown(m)
+
+func (x *TaskQueueBulkAddRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueAddResponse proto.InternalMessageInfo
+func (*TaskQueueBulkAddRequest) ProtoMessage() {}
 
-func (m *TaskQueueAddResponse) GetChosenTaskName() []byte {
-	if m != nil {
-		return m.ChosenTaskName
+func (x *TaskQueueBulkAddRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 nil
-}
-
-type TaskQueueBulkAddRequest struct {
-	AddRequest           []*TaskQueueAddRequest `protobuf:"bytes,1,rep,name=add_request,json=addRequest" json:"add_request,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	return mi.MessageOf(x)
 }
 
-func (m *TaskQueueBulkAddRequest) Reset()         { *m = TaskQueueBulkAddRequest{} }
-func (m *TaskQueueBulkAddRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueBulkAddRequest) ProtoMessage()    {}
+// Deprecated: Use TaskQueueBulkAddRequest.ProtoReflect.Descriptor instead.
 func (*TaskQueueBulkAddRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{8}
-}
-func (m *TaskQueueBulkAddRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueBulkAddRequest.Unmarshal(m, b)
-}
-func (m *TaskQueueBulkAddRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueBulkAddRequest.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueBulkAddRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueBulkAddRequest.Merge(dst, src)
-}
-func (m *TaskQueueBulkAddRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueBulkAddRequest.Size(m)
-}
-func (m *TaskQueueBulkAddRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueBulkAddRequest.DiscardUnknown(m)
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{8}
 }
 
-var xxx_messageInfo_TaskQueueBulkAddRequest proto.InternalMessageInfo
-
-func (m *TaskQueueBulkAddRequest) GetAddRequest() []*TaskQueueAddRequest {
-	if m != nil {
-		return m.AddRequest
+func (x *TaskQueueBulkAddRequest) GetAddRequest() []*TaskQueueAddRequest {
+	if x != nil {
+		return x.AddRequest
 	}
 	return nil
 }
 
 type TaskQueueBulkAddResponse struct {
-	Taskresult           []*TaskQueueBulkAddResponse_TaskResult `protobuf:"group,1,rep,name=TaskResult,json=taskresult" json:"taskresult,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
-	XXX_unrecognized     []byte                                 `json:"-"`
-	XXX_sizecache        int32                                  `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueBulkAddResponse) Reset()         { *m = TaskQueueBulkAddResponse{} }
-func (m *TaskQueueBulkAddResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueBulkAddResponse) ProtoMessage()    {}
-func (*TaskQueueBulkAddResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{9}
-}
-func (m *TaskQueueBulkAddResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueBulkAddResponse.Unmarshal(m, b)
-}
-func (m *TaskQueueBulkAddResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueBulkAddResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueBulkAddResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueBulkAddResponse.Merge(dst, src)
-}
-func (m *TaskQueueBulkAddResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueBulkAddResponse.Size(m)
-}
-func (m *TaskQueueBulkAddResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueBulkAddResponse.DiscardUnknown(m)
+	TaskResult []*TaskQueueBulkAddResponse_TaskResultType `protobuf:"bytes,1,rep,name=TaskResult,proto3" json:"TaskResult,omitempty"`
 }
 
-var xxx_messageInfo_TaskQueueBulkAddResponse proto.InternalMessageInfo
-
-func (m *TaskQueueBulkAddResponse) GetTaskresult() []*TaskQueueBulkAddResponse_TaskResult {
-	if m != nil {
-		return m.Taskresult
+func (x *TaskQueueBulkAddResponse) Reset() {
+	*x = TaskQueueBulkAddResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-type TaskQueueBulkAddResponse_TaskResult struct {
-	Result               *TaskQueueServiceError_ErrorCode `protobuf:"varint,2,req,name=result,enum=appengine.TaskQueueServiceError_ErrorCode" json:"result,omitempty"`
-	ChosenTaskName       []byte                           `protobuf:"bytes,3,opt,name=chosen_task_name,json=chosenTaskName" json:"chosen_task_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
-	XXX_unrecognized     []byte                           `json:"-"`
-	XXX_sizecache        int32                            `json:"-"`
+func (x *TaskQueueBulkAddResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *TaskQueueBulkAddResponse_TaskResult) Reset()         { *m = TaskQueueBulkAddResponse_TaskResult{} }
-func (m *TaskQueueBulkAddResponse_TaskResult) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueBulkAddResponse_TaskResult) ProtoMessage()    {}
-func (*TaskQueueBulkAddResponse_TaskResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{9, 0}
-}
-func (m *TaskQueueBulkAddResponse_TaskResult) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueBulkAddResponse_TaskResult.Unmarshal(m, b)
-}
-func (m *TaskQueueBulkAddResponse_TaskResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueBulkAddResponse_TaskResult.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueBulkAddResponse_TaskResult) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueBulkAddResponse_TaskResult.Merge(dst, src)
-}
-func (m *TaskQueueBulkAddResponse_TaskResult) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueBulkAddResponse_TaskResult.Size(m)
-}
-func (m *TaskQueueBulkAddResponse_TaskResult) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueBulkAddResponse_TaskResult.DiscardUnknown(m)
-}
+func (*TaskQueueBulkAddResponse) ProtoMessage() {}
 
-var xxx_messageInfo_TaskQueueBulkAddResponse_TaskResult proto.InternalMessageInfo
-
-func (m *TaskQueueBulkAddResponse_TaskResult) GetResult() TaskQueueServiceError_ErrorCode {
-	if m != nil && m.Result != nil {
-		return *m.Result
+func (x *TaskQueueBulkAddResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 TaskQueueServiceError_OK
+	return mi.MessageOf(x)
 }
 
-func (m *TaskQueueBulkAddResponse_TaskResult) GetChosenTaskName() []byte {
-	if m != nil {
-		return m.ChosenTaskName
+// Deprecated: Use TaskQueueBulkAddResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueBulkAddResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *TaskQueueBulkAddResponse) GetTaskResult() []*TaskQueueBulkAddResponse_TaskResultType {
+	if x != nil {
+		return x.TaskResult
 	}
 	return nil
 }
 
 type TaskQueueDeleteRequest struct {
-	QueueName            []byte   `protobuf:"bytes,1,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	TaskName             [][]byte `protobuf:"bytes,2,rep,name=task_name,json=taskName" json:"task_name,omitempty"`
-	AppId                []byte   `protobuf:"bytes,3,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueDeleteRequest) Reset()         { *m = TaskQueueDeleteRequest{} }
-func (m *TaskQueueDeleteRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueDeleteRequest) ProtoMessage()    {}
-func (*TaskQueueDeleteRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{10}
-}
-func (m *TaskQueueDeleteRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueDeleteRequest.Unmarshal(m, b)
+	QueueName []byte   `protobuf:"bytes,1,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	TaskName  [][]byte `protobuf:"bytes,2,rep,name=task_name,json=taskName,proto3" json:"task_name,omitempty"`
+	AppId     []byte   `protobuf:"bytes,3,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
 }
-func (m *TaskQueueDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueDeleteRequest.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueDeleteRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueDeleteRequest.Merge(dst, src)
+
+func (x *TaskQueueDeleteRequest) Reset() {
+	*x = TaskQueueDeleteRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueDeleteRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueDeleteRequest.Size(m)
+
+func (x *TaskQueueDeleteRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueDeleteRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueDeleteRequest.DiscardUnknown(m)
+
+func (*TaskQueueDeleteRequest) ProtoMessage() {}
+
+func (x *TaskQueueDeleteRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueDeleteRequest proto.InternalMessageInfo
+// Deprecated: Use TaskQueueDeleteRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueDeleteRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{10}
+}
 
-func (m *TaskQueueDeleteRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueueDeleteRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
 	}
 	return nil
 }
 
-func (m *TaskQueueDeleteRequest) GetTaskName() [][]byte {
-	if m != nil {
-		return m.TaskName
+func (x *TaskQueueDeleteRequest) GetTaskName() [][]byte {
+	if x != nil {
+		return x.TaskName
 	}
 	return nil
 }
 
-func (m *TaskQueueDeleteRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueDeleteRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
 type TaskQueueDeleteResponse struct {
-	Result               []TaskQueueServiceError_ErrorCode `protobuf:"varint,3,rep,name=result,enum=appengine.TaskQueueServiceError_ErrorCode" json:"result,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
-	XXX_unrecognized     []byte                            `json:"-"`
-	XXX_sizecache        int32                             `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueDeleteResponse) Reset()         { *m = TaskQueueDeleteResponse{} }
-func (m *TaskQueueDeleteResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueDeleteResponse) ProtoMessage()    {}
-func (*TaskQueueDeleteResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{11}
-}
-func (m *TaskQueueDeleteResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueDeleteResponse.Unmarshal(m, b)
+	Result []TaskQueueServiceError_ErrorCode `protobuf:"varint,3,rep,packed,name=result,proto3,enum=appengine.TaskQueueServiceError_ErrorCode" json:"result,omitempty"`
 }
-func (m *TaskQueueDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueDeleteResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueDeleteResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueDeleteResponse.Merge(dst, src)
+
+func (x *TaskQueueDeleteResponse) Reset() {
+	*x = TaskQueueDeleteResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueDeleteResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueDeleteResponse.Size(m)
+
+func (x *TaskQueueDeleteResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueDeleteResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueDeleteResponse.DiscardUnknown(m)
+
+func (*TaskQueueDeleteResponse) ProtoMessage() {}
+
+func (x *TaskQueueDeleteResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueDeleteResponse proto.InternalMessageInfo
+// Deprecated: Use TaskQueueDeleteResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueDeleteResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{11}
+}
 
-func (m *TaskQueueDeleteResponse) GetResult() []TaskQueueServiceError_ErrorCode {
-	if m != nil {
-		return m.Result
+func (x *TaskQueueDeleteResponse) GetResult() []TaskQueueServiceError_ErrorCode {
+	if x != nil {
+		return x.Result
 	}
 	return nil
 }
 
 type TaskQueueForceRunRequest struct {
-	AppId                []byte   `protobuf:"bytes,1,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	QueueName            []byte   `protobuf:"bytes,2,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	TaskName             []byte   `protobuf:"bytes,3,req,name=task_name,json=taskName" json:"task_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueForceRunRequest) Reset()         { *m = TaskQueueForceRunRequest{} }
-func (m *TaskQueueForceRunRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueForceRunRequest) ProtoMessage()    {}
-func (*TaskQueueForceRunRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{12}
-}
-func (m *TaskQueueForceRunRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueForceRunRequest.Unmarshal(m, b)
+	AppId     []byte `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
+	QueueName []byte `protobuf:"bytes,2,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	TaskName  []byte `protobuf:"bytes,3,opt,name=task_name,json=taskName,proto3" json:"task_name,omitempty"`
 }
-func (m *TaskQueueForceRunRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueForceRunRequest.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueForceRunRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueForceRunRequest.Merge(dst, src)
+
+func (x *TaskQueueForceRunRequest) Reset() {
+	*x = TaskQueueForceRunRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueForceRunRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueForceRunRequest.Size(m)
+
+func (x *TaskQueueForceRunRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueForceRunRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueForceRunRequest.DiscardUnknown(m)
+
+func (*TaskQueueForceRunRequest) ProtoMessage() {}
+
+func (x *TaskQueueForceRunRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueForceRunRequest proto.InternalMessageInfo
+// Deprecated: Use TaskQueueForceRunRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueForceRunRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{12}
+}
 
-func (m *TaskQueueForceRunRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueForceRunRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueueForceRunRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueueForceRunRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
 	}
 	return nil
 }
 
-func (m *TaskQueueForceRunRequest) GetTaskName() []byte {
-	if m != nil {
-		return m.TaskName
+func (x *TaskQueueForceRunRequest) GetTaskName() []byte {
+	if x != nil {
+		return x.TaskName
 	}
 	return nil
 }
 
 type TaskQueueForceRunResponse struct {
-	Result               *TaskQueueServiceError_ErrorCode `protobuf:"varint,3,req,name=result,enum=appengine.TaskQueueServiceError_ErrorCode" json:"result,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
-	XXX_unrecognized     []byte                           `json:"-"`
-	XXX_sizecache        int32                            `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueForceRunResponse) Reset()         { *m = TaskQueueForceRunResponse{} }
-func (m *TaskQueueForceRunResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueForceRunResponse) ProtoMessage()    {}
-func (*TaskQueueForceRunResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{13}
-}
-func (m *TaskQueueForceRunResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueForceRunResponse.Unmarshal(m, b)
+	Result TaskQueueServiceError_ErrorCode `protobuf:"varint,3,opt,name=result,proto3,enum=appengine.TaskQueueServiceError_ErrorCode" json:"result,omitempty"`
 }
-func (m *TaskQueueForceRunResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueForceRunResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueForceRunResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueForceRunResponse.Merge(dst, src)
+
+func (x *TaskQueueForceRunResponse) Reset() {
+	*x = TaskQueueForceRunResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueForceRunResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueForceRunResponse.Size(m)
+
+func (x *TaskQueueForceRunResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueForceRunResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueForceRunResponse.DiscardUnknown(m)
+
+func (*TaskQueueForceRunResponse) ProtoMessage() {}
+
+func (x *TaskQueueForceRunResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueForceRunResponse proto.InternalMessageInfo
+// Deprecated: Use TaskQueueForceRunResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueForceRunResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{13}
+}
 
-func (m *TaskQueueForceRunResponse) GetResult() TaskQueueServiceError_ErrorCode {
-	if m != nil && m.Result != nil {
-		return *m.Result
+func (x *TaskQueueForceRunResponse) GetResult() TaskQueueServiceError_ErrorCode {
+	if x != nil {
+		return x.Result
 	}
 	return TaskQueueServiceError_OK
 }
 
 type TaskQueueUpdateQueueRequest struct {
-	AppId                 []byte                    `protobuf:"bytes,1,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	QueueName             []byte                    `protobuf:"bytes,2,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	BucketRefillPerSecond *float64                  `protobuf:"fixed64,3,req,name=bucket_refill_per_second,json=bucketRefillPerSecond" json:"bucket_refill_per_second,omitempty"`
-	BucketCapacity        *int32                    `protobuf:"varint,4,req,name=bucket_capacity,json=bucketCapacity" json:"bucket_capacity,omitempty"`
-	UserSpecifiedRate     *string                   `protobuf:"bytes,5,opt,name=user_specified_rate,json=userSpecifiedRate" json:"user_specified_rate,omitempty"`
-	RetryParameters       *TaskQueueRetryParameters `protobuf:"bytes,6,opt,name=retry_parameters,json=retryParameters" json:"retry_parameters,omitempty"`
-	MaxConcurrentRequests *int32                    `protobuf:"varint,7,opt,name=max_concurrent_requests,json=maxConcurrentRequests" json:"max_concurrent_requests,omitempty"`
-	Mode                  *TaskQueueMode_Mode       `protobuf:"varint,8,opt,name=mode,enum=appengine.TaskQueueMode_Mode,def=0" json:"mode,omitempty"`
-	Acl                   *TaskQueueAcl             `protobuf:"bytes,9,opt,name=acl" json:"acl,omitempty"`
-	HeaderOverride        []*TaskQueueHttpHeader    `protobuf:"bytes,10,rep,name=header_override,json=headerOverride" json:"header_override,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{}                  `json:"-"`
-	XXX_unrecognized      []byte                    `json:"-"`
-	XXX_sizecache         int32                     `json:"-"`
-}
-
-func (m *TaskQueueUpdateQueueRequest) Reset()         { *m = TaskQueueUpdateQueueRequest{} }
-func (m *TaskQueueUpdateQueueRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueUpdateQueueRequest) ProtoMessage()    {}
-func (*TaskQueueUpdateQueueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{14}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId                 []byte                    `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
+	QueueName             []byte                    `protobuf:"bytes,2,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	BucketRefillPerSecond float64                   `protobuf:"fixed64,3,opt,name=bucket_refill_per_second,json=bucketRefillPerSecond,proto3" json:"bucket_refill_per_second,omitempty"`
+	BucketCapacity        int32                     `protobuf:"varint,4,opt,name=bucket_capacity,json=bucketCapacity,proto3" json:"bucket_capacity,omitempty"`
+	UserSpecifiedRate     *string                   `protobuf:"bytes,5,opt,name=user_specified_rate,json=userSpecifiedRate,proto3,oneof" json:"user_specified_rate,omitempty"`
+	RetryParameters       *TaskQueueRetryParameters `protobuf:"bytes,6,opt,name=retry_parameters,json=retryParameters,proto3,oneof" json:"retry_parameters,omitempty"`
+	MaxConcurrentRequests *int32                    `protobuf:"varint,7,opt,name=max_concurrent_requests,json=maxConcurrentRequests,proto3,oneof" json:"max_concurrent_requests,omitempty"`
+	Mode                  *TaskQueueMode_Mode       `protobuf:"varint,8,opt,name=mode,proto3,enum=appengine.TaskQueueMode_Mode,oneof" json:"mode,omitempty"`
+	Acl                   *TaskQueueAcl             `protobuf:"bytes,9,opt,name=acl,proto3,oneof" json:"acl,omitempty"`
+	HeaderOverride        []*TaskQueueHttpHeader    `protobuf:"bytes,10,rep,name=header_override,json=headerOverride,proto3" json:"header_override,omitempty"`
 }
-func (m *TaskQueueUpdateQueueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueUpdateQueueRequest.Unmarshal(m, b)
+
+func (x *TaskQueueUpdateQueueRequest) Reset() {
+	*x = TaskQueueUpdateQueueRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueUpdateQueueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueUpdateQueueRequest.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueUpdateQueueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueUpdateQueueRequest.Merge(dst, src)
-}
-func (m *TaskQueueUpdateQueueRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueUpdateQueueRequest.Size(m)
-}
-func (m *TaskQueueUpdateQueueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueUpdateQueueRequest.DiscardUnknown(m)
+
+func (x *TaskQueueUpdateQueueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueUpdateQueueRequest proto.InternalMessageInfo
+func (*TaskQueueUpdateQueueRequest) ProtoMessage() {}
+
+func (x *TaskQueueUpdateQueueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
+}
 
-const Default_TaskQueueUpdateQueueRequest_Mode TaskQueueMode_Mode = TaskQueueMode_PUSH
+// Deprecated: Use TaskQueueUpdateQueueRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueUpdateQueueRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{14}
+}
 
-func (m *TaskQueueUpdateQueueRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueUpdateQueueRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueueUpdateQueueRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueueUpdateQueueRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
 	}
 	return nil
 }
 
-func (m *TaskQueueUpdateQueueRequest) GetBucketRefillPerSecond() float64 {
-	if m != nil && m.BucketRefillPerSecond != nil {
-		return *m.BucketRefillPerSecond
+func (x *TaskQueueUpdateQueueRequest) GetBucketRefillPerSecond() float64 {
+	if x != nil {
+		return x.BucketRefillPerSecond
 	}
 	return 0
 }
 
-func (m *TaskQueueUpdateQueueRequest) GetBucketCapacity() int32 {
-	if m != nil && m.BucketCapacity != nil {
-		return *m.BucketCapacity
+func (x *TaskQueueUpdateQueueRequest) GetBucketCapacity() int32 {
+	if x != nil {
+		return x.BucketCapacity
 	}
 	return 0
 }
 
-func (m *TaskQueueUpdateQueueRequest) GetUserSpecifiedRate() string {
-	if m != nil && m.UserSpecifiedRate != nil {
-		return *m.UserSpecifiedRate
+func (x *TaskQueueUpdateQueueRequest) GetUserSpecifiedRate() string {
+	if x != nil && x.UserSpecifiedRate != nil {
+		return *x.UserSpecifiedRate
 	}
 	return ""
 }
 
-func (m *TaskQueueUpdateQueueRequest) GetRetryParameters() *TaskQueueRetryParameters {
-	if m != nil {
-		return m.RetryParameters
+func (x *TaskQueueUpdateQueueRequest) GetRetryParameters() *TaskQueueRetryParameters {
+	if x != nil {
+		return x.RetryParameters
 	}
 	return nil
 }
 
-func (m *TaskQueueUpdateQueueRequest) GetMaxConcurrentRequests() int32 {
-	if m != nil && m.MaxConcurrentRequests != nil {
-		return *m.MaxConcurrentRequests
+func (x *TaskQueueUpdateQueueRequest) GetMaxConcurrentRequests() int32 {
+	if x != nil && x.MaxConcurrentRequests != nil {
+		return *x.MaxConcurrentRequests
 	}
 	return 0
 }
 
-func (m *TaskQueueUpdateQueueRequest) GetMode() TaskQueueMode_Mode {
-	if m != nil && m.Mode != nil {
-		return *m.Mode
+func (x *TaskQueueUpdateQueueRequest) GetMode() TaskQueueMode_Mode {
+	if x != nil && x.Mode != nil {
+		return *x.Mode
 	}
-	return Default_TaskQueueUpdateQueueRequest_Mode
+	return TaskQueueMode_PUSH
 }
 
-func (m *TaskQueueUpdateQueueRequest) GetAcl() *TaskQueueAcl {
-	if m != nil {
-		return m.Acl
+func (x *TaskQueueUpdateQueueRequest) GetAcl() *TaskQueueAcl {
+	if x != nil {
+		return x.Acl
 	}
 	return nil
 }
 
-func (m *TaskQueueUpdateQueueRequest) GetHeaderOverride() []*TaskQueueHttpHeader {
-	if m != nil {
-		return m.HeaderOverride
+func (x *TaskQueueUpdateQueueRequest) GetHeaderOverride() []*TaskQueueHttpHeader {
+	if x != nil {
+		return x.HeaderOverride
 	}
 	return nil
 }
 
 type TaskQueueUpdateQueueResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *TaskQueueUpdateQueueResponse) Reset()         { *m = TaskQueueUpdateQueueResponse{} }
-func (m *TaskQueueUpdateQueueResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueUpdateQueueResponse) ProtoMessage()    {}
-func (*TaskQueueUpdateQueueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{15}
-}
-func (m *TaskQueueUpdateQueueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueUpdateQueueResponse.Unmarshal(m, b)
-}
-func (m *TaskQueueUpdateQueueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueUpdateQueueResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueUpdateQueueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueUpdateQueueResponse.Merge(dst, src)
-}
-func (m *TaskQueueUpdateQueueResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueUpdateQueueResponse.Size(m)
+func (x *TaskQueueUpdateQueueResponse) Reset() {
+	*x = TaskQueueUpdateQueueResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueUpdateQueueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueUpdateQueueResponse.DiscardUnknown(m)
+
+func (x *TaskQueueUpdateQueueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueUpdateQueueResponse proto.InternalMessageInfo
+func (*TaskQueueUpdateQueueResponse) ProtoMessage() {}
 
-type TaskQueueFetchQueuesRequest struct {
-	AppId                []byte   `protobuf:"bytes,1,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	MaxRows              *int32   `protobuf:"varint,2,req,name=max_rows,json=maxRows" json:"max_rows,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TaskQueueUpdateQueueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-func (m *TaskQueueFetchQueuesRequest) Reset()         { *m = TaskQueueFetchQueuesRequest{} }
-func (m *TaskQueueFetchQueuesRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueFetchQueuesRequest) ProtoMessage()    {}
-func (*TaskQueueFetchQueuesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{16}
-}
-func (m *TaskQueueFetchQueuesRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueFetchQueuesRequest.Unmarshal(m, b)
+// Deprecated: Use TaskQueueUpdateQueueResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueUpdateQueueResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{15}
 }
-func (m *TaskQueueFetchQueuesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueFetchQueuesRequest.Marshal(b, m, deterministic)
+
+type TaskQueueFetchQueuesRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId   []byte `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
+	MaxRows int32  `protobuf:"varint,2,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"`
 }
-func (dst *TaskQueueFetchQueuesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueFetchQueuesRequest.Merge(dst, src)
+
+func (x *TaskQueueFetchQueuesRequest) Reset() {
+	*x = TaskQueueFetchQueuesRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueFetchQueuesRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueFetchQueuesRequest.Size(m)
+
+func (x *TaskQueueFetchQueuesRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueFetchQueuesRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueFetchQueuesRequest.DiscardUnknown(m)
+
+func (*TaskQueueFetchQueuesRequest) ProtoMessage() {}
+
+func (x *TaskQueueFetchQueuesRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueFetchQueuesRequest proto.InternalMessageInfo
+// Deprecated: Use TaskQueueFetchQueuesRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueFetchQueuesRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{16}
+}
 
-func (m *TaskQueueFetchQueuesRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueFetchQueuesRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueueFetchQueuesRequest) GetMaxRows() int32 {
-	if m != nil && m.MaxRows != nil {
-		return *m.MaxRows
+func (x *TaskQueueFetchQueuesRequest) GetMaxRows() int32 {
+	if x != nil {
+		return x.MaxRows
 	}
 	return 0
 }
 
 type TaskQueueFetchQueuesResponse struct {
-	Queue                []*TaskQueueFetchQueuesResponse_Queue `protobuf:"group,1,rep,name=Queue,json=queue" json:"queue,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
-	XXX_unrecognized     []byte                                `json:"-"`
-	XXX_sizecache        int32                                 `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueFetchQueuesResponse) Reset()         { *m = TaskQueueFetchQueuesResponse{} }
-func (m *TaskQueueFetchQueuesResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueFetchQueuesResponse) ProtoMessage()    {}
-func (*TaskQueueFetchQueuesResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{17}
-}
-func (m *TaskQueueFetchQueuesResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueFetchQueuesResponse.Unmarshal(m, b)
-}
-func (m *TaskQueueFetchQueuesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueFetchQueuesResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueFetchQueuesResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueFetchQueuesResponse.Merge(dst, src)
-}
-func (m *TaskQueueFetchQueuesResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueFetchQueuesResponse.Size(m)
-}
-func (m *TaskQueueFetchQueuesResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueFetchQueuesResponse.DiscardUnknown(m)
+	Queue []*TaskQueueFetchQueuesResponse_QueueType `protobuf:"bytes,1,rep,name=Queue,proto3" json:"Queue,omitempty"`
 }
 
-var xxx_messageInfo_TaskQueueFetchQueuesResponse proto.InternalMessageInfo
-
-func (m *TaskQueueFetchQueuesResponse) GetQueue() []*TaskQueueFetchQueuesResponse_Queue {
-	if m != nil {
-		return m.Queue
+func (x *TaskQueueFetchQueuesResponse) Reset() {
+	*x = TaskQueueFetchQueuesResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-type TaskQueueFetchQueuesResponse_Queue struct {
-	QueueName             []byte                    `protobuf:"bytes,2,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	BucketRefillPerSecond *float64                  `protobuf:"fixed64,3,req,name=bucket_refill_per_second,json=bucketRefillPerSecond" json:"bucket_refill_per_second,omitempty"`
-	BucketCapacity        *float64                  `protobuf:"fixed64,4,req,name=bucket_capacity,json=bucketCapacity" json:"bucket_capacity,omitempty"`
-	UserSpecifiedRate     *string                   `protobuf:"bytes,5,opt,name=user_specified_rate,json=userSpecifiedRate" json:"user_specified_rate,omitempty"`
-	Paused                *bool                     `protobuf:"varint,6,req,name=paused,def=0" json:"paused,omitempty"`
-	RetryParameters       *TaskQueueRetryParameters `protobuf:"bytes,7,opt,name=retry_parameters,json=retryParameters" json:"retry_parameters,omitempty"`
-	MaxConcurrentRequests *int32                    `protobuf:"varint,8,opt,name=max_concurrent_requests,json=maxConcurrentRequests" json:"max_concurrent_requests,omitempty"`
-	Mode                  *TaskQueueMode_Mode       `protobuf:"varint,9,opt,name=mode,enum=appengine.TaskQueueMode_Mode,def=0" json:"mode,omitempty"`
-	Acl                   *TaskQueueAcl             `protobuf:"bytes,10,opt,name=acl" json:"acl,omitempty"`
-	HeaderOverride        []*TaskQueueHttpHeader    `protobuf:"bytes,11,rep,name=header_override,json=headerOverride" json:"header_override,omitempty"`
-	CreatorName           *string                   `protobuf:"bytes,12,opt,name=creator_name,json=creatorName,def=apphosting" json:"creator_name,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{}                  `json:"-"`
-	XXX_unrecognized      []byte                    `json:"-"`
-	XXX_sizecache         int32                     `json:"-"`
+func (x *TaskQueueFetchQueuesResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) Reset()         { *m = TaskQueueFetchQueuesResponse_Queue{} }
-func (m *TaskQueueFetchQueuesResponse_Queue) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueFetchQueuesResponse_Queue) ProtoMessage()    {}
-func (*TaskQueueFetchQueuesResponse_Queue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{17, 0}
-}
-func (m *TaskQueueFetchQueuesResponse_Queue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueFetchQueuesResponse_Queue.Unmarshal(m, b)
-}
-func (m *TaskQueueFetchQueuesResponse_Queue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueFetchQueuesResponse_Queue.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueFetchQueuesResponse_Queue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueFetchQueuesResponse_Queue.Merge(dst, src)
-}
-func (m *TaskQueueFetchQueuesResponse_Queue) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueFetchQueuesResponse_Queue.Size(m)
-}
-func (m *TaskQueueFetchQueuesResponse_Queue) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueFetchQueuesResponse_Queue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TaskQueueFetchQueuesResponse_Queue proto.InternalMessageInfo
-
-const Default_TaskQueueFetchQueuesResponse_Queue_Paused bool = false
-const Default_TaskQueueFetchQueuesResponse_Queue_Mode TaskQueueMode_Mode = TaskQueueMode_PUSH
-const Default_TaskQueueFetchQueuesResponse_Queue_CreatorName string = "apphosting"
+func (*TaskQueueFetchQueuesResponse) ProtoMessage() {}
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueueFetchQueuesResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 nil
+	return mi.MessageOf(x)
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetBucketRefillPerSecond() float64 {
-	if m != nil && m.BucketRefillPerSecond != nil {
-		return *m.BucketRefillPerSecond
-	}
-	return 0
+// Deprecated: Use TaskQueueFetchQueuesResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueFetchQueuesResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetBucketCapacity() float64 {
-	if m != nil && m.BucketCapacity != nil {
-		return *m.BucketCapacity
+func (x *TaskQueueFetchQueuesResponse) GetQueue() []*TaskQueueFetchQueuesResponse_QueueType {
+	if x != nil {
+		return x.Queue
 	}
-	return 0
+	return nil
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetUserSpecifiedRate() string {
-	if m != nil && m.UserSpecifiedRate != nil {
-		return *m.UserSpecifiedRate
-	}
-	return ""
+type TaskQueueFetchQueueStatsRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId       []byte   `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
+	QueueName   [][]byte `protobuf:"bytes,2,rep,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	MaxNumTasks *int32   `protobuf:"varint,3,opt,name=max_num_tasks,json=maxNumTasks,proto3,oneof" json:"max_num_tasks,omitempty"`
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetPaused() bool {
-	if m != nil && m.Paused != nil {
-		return *m.Paused
+func (x *TaskQueueFetchQueueStatsRequest) Reset() {
+	*x = TaskQueueFetchQueueStatsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return Default_TaskQueueFetchQueuesResponse_Queue_Paused
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetRetryParameters() *TaskQueueRetryParameters {
-	if m != nil {
-		return m.RetryParameters
-	}
-	return nil
+func (x *TaskQueueFetchQueueStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetMaxConcurrentRequests() int32 {
-	if m != nil && m.MaxConcurrentRequests != nil {
-		return *m.MaxConcurrentRequests
+func (*TaskQueueFetchQueueStatsRequest) ProtoMessage() {}
+
+func (x *TaskQueueFetchQueueStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 0
+	return mi.MessageOf(x)
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetMode() TaskQueueMode_Mode {
-	if m != nil && m.Mode != nil {
-		return *m.Mode
-	}
-	return Default_TaskQueueFetchQueuesResponse_Queue_Mode
+// Deprecated: Use TaskQueueFetchQueueStatsRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueFetchQueueStatsRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetAcl() *TaskQueueAcl {
-	if m != nil {
-		return m.Acl
+func (x *TaskQueueFetchQueueStatsRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetHeaderOverride() []*TaskQueueHttpHeader {
-	if m != nil {
-		return m.HeaderOverride
+func (x *TaskQueueFetchQueueStatsRequest) GetQueueName() [][]byte {
+	if x != nil {
+		return x.QueueName
 	}
 	return nil
 }
 
-func (m *TaskQueueFetchQueuesResponse_Queue) GetCreatorName() string {
-	if m != nil && m.CreatorName != nil {
-		return *m.CreatorName
+func (x *TaskQueueFetchQueueStatsRequest) GetMaxNumTasks() int32 {
+	if x != nil && x.MaxNumTasks != nil {
+		return *x.MaxNumTasks
 	}
-	return Default_TaskQueueFetchQueuesResponse_Queue_CreatorName
+	return 0
 }
 
-type TaskQueueFetchQueueStatsRequest struct {
-	AppId                []byte   `protobuf:"bytes,1,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	QueueName            [][]byte `protobuf:"bytes,2,rep,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	MaxNumTasks          *int32   `protobuf:"varint,3,opt,name=max_num_tasks,json=maxNumTasks,def=0" json:"max_num_tasks,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type TaskQueueScannerQueueInfo struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueFetchQueueStatsRequest) Reset()         { *m = TaskQueueFetchQueueStatsRequest{} }
-func (m *TaskQueueFetchQueueStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueFetchQueueStatsRequest) ProtoMessage()    {}
-func (*TaskQueueFetchQueueStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{18}
-}
-func (m *TaskQueueFetchQueueStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueFetchQueueStatsRequest.Unmarshal(m, b)
-}
-func (m *TaskQueueFetchQueueStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueFetchQueueStatsRequest.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueFetchQueueStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueFetchQueueStatsRequest.Merge(dst, src)
+	ExecutedLastMinute      int64    `protobuf:"varint,1,opt,name=executed_last_minute,json=executedLastMinute,proto3" json:"executed_last_minute,omitempty"`
+	ExecutedLastHour        int64    `protobuf:"varint,2,opt,name=executed_last_hour,json=executedLastHour,proto3" json:"executed_last_hour,omitempty"`
+	SamplingDurationSeconds float64  `protobuf:"fixed64,3,opt,name=sampling_duration_seconds,json=samplingDurationSeconds,proto3" json:"sampling_duration_seconds,omitempty"`
+	RequestsInFlight        *int32   `protobuf:"varint,4,opt,name=requests_in_flight,json=requestsInFlight,proto3,oneof" json:"requests_in_flight,omitempty"`
+	EnforcedRate            *float64 `protobuf:"fixed64,5,opt,name=enforced_rate,json=enforcedRate,proto3,oneof" json:"enforced_rate,omitempty"`
 }
-func (m *TaskQueueFetchQueueStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueFetchQueueStatsRequest.Size(m)
-}
-func (m *TaskQueueFetchQueueStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueFetchQueueStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TaskQueueFetchQueueStatsRequest proto.InternalMessageInfo
-
-const Default_TaskQueueFetchQueueStatsRequest_MaxNumTasks int32 = 0
 
-func (m *TaskQueueFetchQueueStatsRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueScannerQueueInfo) Reset() {
+	*x = TaskQueueScannerQueueInfo{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (m *TaskQueueFetchQueueStatsRequest) GetQueueName() [][]byte {
-	if m != nil {
-		return m.QueueName
-	}
-	return nil
+func (x *TaskQueueScannerQueueInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *TaskQueueFetchQueueStatsRequest) GetMaxNumTasks() int32 {
-	if m != nil && m.MaxNumTasks != nil {
-		return *m.MaxNumTasks
+func (*TaskQueueScannerQueueInfo) ProtoMessage() {}
+
+func (x *TaskQueueScannerQueueInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 Default_TaskQueueFetchQueueStatsRequest_MaxNumTasks
+	return mi.MessageOf(x)
 }
 
-type TaskQueueScannerQueueInfo struct {
-	ExecutedLastMinute      *int64   `protobuf:"varint,1,req,name=executed_last_minute,json=executedLastMinute" json:"executed_last_minute,omitempty"`
-	ExecutedLastHour        *int64   `protobuf:"varint,2,req,name=executed_last_hour,json=executedLastHour" json:"executed_last_hour,omitempty"`
-	SamplingDurationSeconds *float64 `protobuf:"fixed64,3,req,name=sampling_duration_seconds,json=samplingDurationSeconds" json:"sampling_duration_seconds,omitempty"`
-	RequestsInFlight        *int32   `protobuf:"varint,4,opt,name=requests_in_flight,json=requestsInFlight" json:"requests_in_flight,omitempty"`
-	EnforcedRate            *float64 `protobuf:"fixed64,5,opt,name=enforced_rate,json=enforcedRate" json:"enforced_rate,omitempty"`
-	XXX_NoUnkeyedLiteral    struct{} `json:"-"`
-	XXX_unrecognized        []byte   `json:"-"`
-	XXX_sizecache           int32    `json:"-"`
-}
-
-func (m *TaskQueueScannerQueueInfo) Reset()         { *m = TaskQueueScannerQueueInfo{} }
-func (m *TaskQueueScannerQueueInfo) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueScannerQueueInfo) ProtoMessage()    {}
+// Deprecated: Use TaskQueueScannerQueueInfo.ProtoReflect.Descriptor instead.
 func (*TaskQueueScannerQueueInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{19}
-}
-func (m *TaskQueueScannerQueueInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueScannerQueueInfo.Unmarshal(m, b)
-}
-func (m *TaskQueueScannerQueueInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueScannerQueueInfo.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueScannerQueueInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueScannerQueueInfo.Merge(dst, src)
-}
-func (m *TaskQueueScannerQueueInfo) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueScannerQueueInfo.Size(m)
-}
-func (m *TaskQueueScannerQueueInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueScannerQueueInfo.DiscardUnknown(m)
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{19}
 }
 
-var xxx_messageInfo_TaskQueueScannerQueueInfo proto.InternalMessageInfo
-
-func (m *TaskQueueScannerQueueInfo) GetExecutedLastMinute() int64 {
-	if m != nil && m.ExecutedLastMinute != nil {
-		return *m.ExecutedLastMinute
+func (x *TaskQueueScannerQueueInfo) GetExecutedLastMinute() int64 {
+	if x != nil {
+		return x.ExecutedLastMinute
 	}
 	return 0
 }
 
-func (m *TaskQueueScannerQueueInfo) GetExecutedLastHour() int64 {
-	if m != nil && m.ExecutedLastHour != nil {
-		return *m.ExecutedLastHour
+func (x *TaskQueueScannerQueueInfo) GetExecutedLastHour() int64 {
+	if x != nil {
+		return x.ExecutedLastHour
 	}
 	return 0
 }
 
-func (m *TaskQueueScannerQueueInfo) GetSamplingDurationSeconds() float64 {
-	if m != nil && m.SamplingDurationSeconds != nil {
-		return *m.SamplingDurationSeconds
+func (x *TaskQueueScannerQueueInfo) GetSamplingDurationSeconds() float64 {
+	if x != nil {
+		return x.SamplingDurationSeconds
 	}
 	return 0
 }
 
-func (m *TaskQueueScannerQueueInfo) GetRequestsInFlight() int32 {
-	if m != nil && m.RequestsInFlight != nil {
-		return *m.RequestsInFlight
+func (x *TaskQueueScannerQueueInfo) GetRequestsInFlight() int32 {
+	if x != nil && x.RequestsInFlight != nil {
+		return *x.RequestsInFlight
 	}
 	return 0
 }
 
-func (m *TaskQueueScannerQueueInfo) GetEnforcedRate() float64 {
-	if m != nil && m.EnforcedRate != nil {
-		return *m.EnforcedRate
+func (x *TaskQueueScannerQueueInfo) GetEnforcedRate() float64 {
+	if x != nil && x.EnforcedRate != nil {
+		return *x.EnforcedRate
 	}
 	return 0
 }
 
 type TaskQueueFetchQueueStatsResponse struct {
-	Queuestats           []*TaskQueueFetchQueueStatsResponse_QueueStats `protobuf:"group,1,rep,name=QueueStats,json=queuestats" json:"queuestats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                       `json:"-"`
-	XXX_unrecognized     []byte                                         `json:"-"`
-	XXX_sizecache        int32                                          `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueFetchQueueStatsResponse) Reset()         { *m = TaskQueueFetchQueueStatsResponse{} }
-func (m *TaskQueueFetchQueueStatsResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueFetchQueueStatsResponse) ProtoMessage()    {}
-func (*TaskQueueFetchQueueStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{20}
-}
-func (m *TaskQueueFetchQueueStatsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueFetchQueueStatsResponse.Unmarshal(m, b)
-}
-func (m *TaskQueueFetchQueueStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueFetchQueueStatsResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueFetchQueueStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueFetchQueueStatsResponse.Merge(dst, src)
-}
-func (m *TaskQueueFetchQueueStatsResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueFetchQueueStatsResponse.Size(m)
-}
-func (m *TaskQueueFetchQueueStatsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueFetchQueueStatsResponse.DiscardUnknown(m)
+	QueueStats []*TaskQueueFetchQueueStatsResponse_QueueStatsType `protobuf:"bytes,1,rep,name=QueueStats,proto3" json:"QueueStats,omitempty"`
 }
 
-var xxx_messageInfo_TaskQueueFetchQueueStatsResponse proto.InternalMessageInfo
-
-func (m *TaskQueueFetchQueueStatsResponse) GetQueuestats() []*TaskQueueFetchQueueStatsResponse_QueueStats {
-	if m != nil {
-		return m.Queuestats
+func (x *TaskQueueFetchQueueStatsResponse) Reset() {
+	*x = TaskQueueFetchQueueStatsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-type TaskQueueFetchQueueStatsResponse_QueueStats struct {
-	NumTasks             *int32                     `protobuf:"varint,2,req,name=num_tasks,json=numTasks" json:"num_tasks,omitempty"`
-	OldestEtaUsec        *int64                     `protobuf:"varint,3,req,name=oldest_eta_usec,json=oldestEtaUsec" json:"oldest_eta_usec,omitempty"`
-	ScannerInfo          *TaskQueueScannerQueueInfo `protobuf:"bytes,4,opt,name=scanner_info,json=scannerInfo" json:"scanner_info,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
-	XXX_unrecognized     []byte                     `json:"-"`
-	XXX_sizecache        int32                      `json:"-"`
+func (x *TaskQueueFetchQueueStatsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *TaskQueueFetchQueueStatsResponse_QueueStats) Reset() {
-	*m = TaskQueueFetchQueueStatsResponse_QueueStats{}
-}
-func (m *TaskQueueFetchQueueStatsResponse_QueueStats) String() string {
-	return proto.CompactTextString(m)
-}
-func (*TaskQueueFetchQueueStatsResponse_QueueStats) ProtoMessage() {}
-func (*TaskQueueFetchQueueStatsResponse_QueueStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{20, 0}
-}
-func (m *TaskQueueFetchQueueStatsResponse_QueueStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueFetchQueueStatsResponse_QueueStats.Unmarshal(m, b)
-}
-func (m *TaskQueueFetchQueueStatsResponse_QueueStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueFetchQueueStatsResponse_QueueStats.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueFetchQueueStatsResponse_QueueStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueFetchQueueStatsResponse_QueueStats.Merge(dst, src)
-}
-func (m *TaskQueueFetchQueueStatsResponse_QueueStats) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueFetchQueueStatsResponse_QueueStats.Size(m)
-}
-func (m *TaskQueueFetchQueueStatsResponse_QueueStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueFetchQueueStatsResponse_QueueStats.DiscardUnknown(m)
-}
+func (*TaskQueueFetchQueueStatsResponse) ProtoMessage() {}
 
-var xxx_messageInfo_TaskQueueFetchQueueStatsResponse_QueueStats proto.InternalMessageInfo
-
-func (m *TaskQueueFetchQueueStatsResponse_QueueStats) GetNumTasks() int32 {
-	if m != nil && m.NumTasks != nil {
-		return *m.NumTasks
+func (x *TaskQueueFetchQueueStatsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 0
+	return mi.MessageOf(x)
 }
 
-func (m *TaskQueueFetchQueueStatsResponse_QueueStats) GetOldestEtaUsec() int64 {
-	if m != nil && m.OldestEtaUsec != nil {
-		return *m.OldestEtaUsec
-	}
-	return 0
+// Deprecated: Use TaskQueueFetchQueueStatsResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueFetchQueueStatsResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{20}
 }
 
-func (m *TaskQueueFetchQueueStatsResponse_QueueStats) GetScannerInfo() *TaskQueueScannerQueueInfo {
-	if m != nil {
-		return m.ScannerInfo
+func (x *TaskQueueFetchQueueStatsResponse) GetQueueStats() []*TaskQueueFetchQueueStatsResponse_QueueStatsType {
+	if x != nil {
+		return x.QueueStats
 	}
 	return nil
 }
 
 type TaskQueuePauseQueueRequest struct {
-	AppId                []byte   `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
-	QueueName            []byte   `protobuf:"bytes,2,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	Pause                *bool    `protobuf:"varint,3,req,name=pause" json:"pause,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueuePauseQueueRequest) Reset()         { *m = TaskQueuePauseQueueRequest{} }
-func (m *TaskQueuePauseQueueRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueuePauseQueueRequest) ProtoMessage()    {}
-func (*TaskQueuePauseQueueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{21}
-}
-func (m *TaskQueuePauseQueueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueuePauseQueueRequest.Unmarshal(m, b)
+	AppId     []byte `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+	QueueName []byte `protobuf:"bytes,2,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	Pause     bool   `protobuf:"varint,3,opt,name=pause,proto3" json:"pause,omitempty"`
 }
-func (m *TaskQueuePauseQueueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueuePauseQueueRequest.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueuePauseQueueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueuePauseQueueRequest.Merge(dst, src)
+
+func (x *TaskQueuePauseQueueRequest) Reset() {
+	*x = TaskQueuePauseQueueRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueuePauseQueueRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueuePauseQueueRequest.Size(m)
+
+func (x *TaskQueuePauseQueueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueuePauseQueueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueuePauseQueueRequest.DiscardUnknown(m)
+
+func (*TaskQueuePauseQueueRequest) ProtoMessage() {}
+
+func (x *TaskQueuePauseQueueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueuePauseQueueRequest proto.InternalMessageInfo
+// Deprecated: Use TaskQueuePauseQueueRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueuePauseQueueRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{21}
+}
 
-func (m *TaskQueuePauseQueueRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueuePauseQueueRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueuePauseQueueRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueuePauseQueueRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
 	}
 	return nil
 }
 
-func (m *TaskQueuePauseQueueRequest) GetPause() bool {
-	if m != nil && m.Pause != nil {
-		return *m.Pause
+func (x *TaskQueuePauseQueueRequest) GetPause() bool {
+	if x != nil {
+		return x.Pause
 	}
 	return false
 }
 
 type TaskQueuePauseQueueResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *TaskQueuePauseQueueResponse) Reset()         { *m = TaskQueuePauseQueueResponse{} }
-func (m *TaskQueuePauseQueueResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueuePauseQueueResponse) ProtoMessage()    {}
-func (*TaskQueuePauseQueueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{22}
-}
-func (m *TaskQueuePauseQueueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueuePauseQueueResponse.Unmarshal(m, b)
-}
-func (m *TaskQueuePauseQueueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueuePauseQueueResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueuePauseQueueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueuePauseQueueResponse.Merge(dst, src)
-}
-func (m *TaskQueuePauseQueueResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueuePauseQueueResponse.Size(m)
+func (x *TaskQueuePauseQueueResponse) Reset() {
+	*x = TaskQueuePauseQueueResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[22]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueuePauseQueueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueuePauseQueueResponse.DiscardUnknown(m)
+
+func (x *TaskQueuePauseQueueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueuePauseQueueResponse proto.InternalMessageInfo
+func (*TaskQueuePauseQueueResponse) ProtoMessage() {}
 
-type TaskQueuePurgeQueueRequest struct {
-	AppId                []byte   `protobuf:"bytes,1,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	QueueName            []byte   `protobuf:"bytes,2,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TaskQueuePauseQueueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-func (m *TaskQueuePurgeQueueRequest) Reset()         { *m = TaskQueuePurgeQueueRequest{} }
-func (m *TaskQueuePurgeQueueRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueuePurgeQueueRequest) ProtoMessage()    {}
-func (*TaskQueuePurgeQueueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{23}
-}
-func (m *TaskQueuePurgeQueueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueuePurgeQueueRequest.Unmarshal(m, b)
+// Deprecated: Use TaskQueuePauseQueueResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueuePauseQueueResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{22}
 }
-func (m *TaskQueuePurgeQueueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueuePurgeQueueRequest.Marshal(b, m, deterministic)
+
+type TaskQueuePurgeQueueRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId     []byte `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
+	QueueName []byte `protobuf:"bytes,2,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
 }
-func (dst *TaskQueuePurgeQueueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueuePurgeQueueRequest.Merge(dst, src)
+
+func (x *TaskQueuePurgeQueueRequest) Reset() {
+	*x = TaskQueuePurgeQueueRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[23]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueuePurgeQueueRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueuePurgeQueueRequest.Size(m)
+
+func (x *TaskQueuePurgeQueueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueuePurgeQueueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueuePurgeQueueRequest.DiscardUnknown(m)
+
+func (*TaskQueuePurgeQueueRequest) ProtoMessage() {}
+
+func (x *TaskQueuePurgeQueueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueuePurgeQueueRequest proto.InternalMessageInfo
+// Deprecated: Use TaskQueuePurgeQueueRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueuePurgeQueueRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{23}
+}
 
-func (m *TaskQueuePurgeQueueRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueuePurgeQueueRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueuePurgeQueueRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueuePurgeQueueRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
 	}
 	return nil
 }
 
 type TaskQueuePurgeQueueResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *TaskQueuePurgeQueueResponse) Reset()         { *m = TaskQueuePurgeQueueResponse{} }
-func (m *TaskQueuePurgeQueueResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueuePurgeQueueResponse) ProtoMessage()    {}
-func (*TaskQueuePurgeQueueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{24}
-}
-func (m *TaskQueuePurgeQueueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueuePurgeQueueResponse.Unmarshal(m, b)
-}
-func (m *TaskQueuePurgeQueueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueuePurgeQueueResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueuePurgeQueueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueuePurgeQueueResponse.Merge(dst, src)
-}
-func (m *TaskQueuePurgeQueueResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueuePurgeQueueResponse.Size(m)
+func (x *TaskQueuePurgeQueueResponse) Reset() {
+	*x = TaskQueuePurgeQueueResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[24]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueuePurgeQueueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueuePurgeQueueResponse.DiscardUnknown(m)
+
+func (x *TaskQueuePurgeQueueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueuePurgeQueueResponse proto.InternalMessageInfo
+func (*TaskQueuePurgeQueueResponse) ProtoMessage() {}
 
-type TaskQueueDeleteQueueRequest struct {
-	AppId                []byte   `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
-	QueueName            []byte   `protobuf:"bytes,2,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TaskQueuePurgeQueueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-func (m *TaskQueueDeleteQueueRequest) Reset()         { *m = TaskQueueDeleteQueueRequest{} }
-func (m *TaskQueueDeleteQueueRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueDeleteQueueRequest) ProtoMessage()    {}
-func (*TaskQueueDeleteQueueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{25}
-}
-func (m *TaskQueueDeleteQueueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueDeleteQueueRequest.Unmarshal(m, b)
+// Deprecated: Use TaskQueuePurgeQueueResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueuePurgeQueueResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{24}
 }
-func (m *TaskQueueDeleteQueueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueDeleteQueueRequest.Marshal(b, m, deterministic)
+
+type TaskQueueDeleteQueueRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId     []byte `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+	QueueName []byte `protobuf:"bytes,2,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
 }
-func (dst *TaskQueueDeleteQueueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueDeleteQueueRequest.Merge(dst, src)
+
+func (x *TaskQueueDeleteQueueRequest) Reset() {
+	*x = TaskQueueDeleteQueueRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[25]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueDeleteQueueRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueDeleteQueueRequest.Size(m)
+
+func (x *TaskQueueDeleteQueueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueDeleteQueueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueDeleteQueueRequest.DiscardUnknown(m)
+
+func (*TaskQueueDeleteQueueRequest) ProtoMessage() {}
+
+func (x *TaskQueueDeleteQueueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueDeleteQueueRequest proto.InternalMessageInfo
+// Deprecated: Use TaskQueueDeleteQueueRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueDeleteQueueRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{25}
+}
 
-func (m *TaskQueueDeleteQueueRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueDeleteQueueRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueueDeleteQueueRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueueDeleteQueueRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
 	}
 	return nil
 }
 
 type TaskQueueDeleteQueueResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *TaskQueueDeleteQueueResponse) Reset()         { *m = TaskQueueDeleteQueueResponse{} }
-func (m *TaskQueueDeleteQueueResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueDeleteQueueResponse) ProtoMessage()    {}
-func (*TaskQueueDeleteQueueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{26}
-}
-func (m *TaskQueueDeleteQueueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueDeleteQueueResponse.Unmarshal(m, b)
-}
-func (m *TaskQueueDeleteQueueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueDeleteQueueResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueDeleteQueueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueDeleteQueueResponse.Merge(dst, src)
-}
-func (m *TaskQueueDeleteQueueResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueDeleteQueueResponse.Size(m)
+func (x *TaskQueueDeleteQueueResponse) Reset() {
+	*x = TaskQueueDeleteQueueResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[26]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueDeleteQueueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueDeleteQueueResponse.DiscardUnknown(m)
+
+func (x *TaskQueueDeleteQueueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueDeleteQueueResponse proto.InternalMessageInfo
+func (*TaskQueueDeleteQueueResponse) ProtoMessage() {}
 
-type TaskQueueDeleteGroupRequest struct {
-	AppId                []byte   `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TaskQueueDeleteQueueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-func (m *TaskQueueDeleteGroupRequest) Reset()         { *m = TaskQueueDeleteGroupRequest{} }
-func (m *TaskQueueDeleteGroupRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueDeleteGroupRequest) ProtoMessage()    {}
-func (*TaskQueueDeleteGroupRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{27}
-}
-func (m *TaskQueueDeleteGroupRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueDeleteGroupRequest.Unmarshal(m, b)
+// Deprecated: Use TaskQueueDeleteQueueResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueDeleteQueueResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{26}
 }
-func (m *TaskQueueDeleteGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueDeleteGroupRequest.Marshal(b, m, deterministic)
+
+type TaskQueueDeleteGroupRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId []byte `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
 }
-func (dst *TaskQueueDeleteGroupRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueDeleteGroupRequest.Merge(dst, src)
+
+func (x *TaskQueueDeleteGroupRequest) Reset() {
+	*x = TaskQueueDeleteGroupRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[27]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueDeleteGroupRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueDeleteGroupRequest.Size(m)
+
+func (x *TaskQueueDeleteGroupRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueDeleteGroupRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueDeleteGroupRequest.DiscardUnknown(m)
+
+func (*TaskQueueDeleteGroupRequest) ProtoMessage() {}
+
+func (x *TaskQueueDeleteGroupRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueDeleteGroupRequest proto.InternalMessageInfo
+// Deprecated: Use TaskQueueDeleteGroupRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueDeleteGroupRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{27}
+}
 
-func (m *TaskQueueDeleteGroupRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueDeleteGroupRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
 type TaskQueueDeleteGroupResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *TaskQueueDeleteGroupResponse) Reset()         { *m = TaskQueueDeleteGroupResponse{} }
-func (m *TaskQueueDeleteGroupResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueDeleteGroupResponse) ProtoMessage()    {}
-func (*TaskQueueDeleteGroupResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{28}
-}
-func (m *TaskQueueDeleteGroupResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueDeleteGroupResponse.Unmarshal(m, b)
-}
-func (m *TaskQueueDeleteGroupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueDeleteGroupResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueDeleteGroupResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueDeleteGroupResponse.Merge(dst, src)
-}
-func (m *TaskQueueDeleteGroupResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueDeleteGroupResponse.Size(m)
+func (x *TaskQueueDeleteGroupResponse) Reset() {
+	*x = TaskQueueDeleteGroupResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[28]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueDeleteGroupResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueDeleteGroupResponse.DiscardUnknown(m)
+
+func (x *TaskQueueDeleteGroupResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueDeleteGroupResponse proto.InternalMessageInfo
+func (*TaskQueueDeleteGroupResponse) ProtoMessage() {}
 
-type TaskQueueQueryTasksRequest struct {
-	AppId                []byte   `protobuf:"bytes,1,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	QueueName            []byte   `protobuf:"bytes,2,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	StartTaskName        []byte   `protobuf:"bytes,3,opt,name=start_task_name,json=startTaskName" json:"start_task_name,omitempty"`
-	StartEtaUsec         *int64   `protobuf:"varint,4,opt,name=start_eta_usec,json=startEtaUsec" json:"start_eta_usec,omitempty"`
-	StartTag             []byte   `protobuf:"bytes,6,opt,name=start_tag,json=startTag" json:"start_tag,omitempty"`
-	MaxRows              *int32   `protobuf:"varint,5,opt,name=max_rows,json=maxRows,def=1" json:"max_rows,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *TaskQueueQueryTasksRequest) Reset()         { *m = TaskQueueQueryTasksRequest{} }
-func (m *TaskQueueQueryTasksRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueQueryTasksRequest) ProtoMessage()    {}
-func (*TaskQueueQueryTasksRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{29}
-}
-func (m *TaskQueueQueryTasksRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueQueryTasksRequest.Unmarshal(m, b)
+func (x *TaskQueueDeleteGroupResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
-func (m *TaskQueueQueryTasksRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueQueryTasksRequest.Marshal(b, m, deterministic)
+
+// Deprecated: Use TaskQueueDeleteGroupResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueDeleteGroupResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{28}
 }
-func (dst *TaskQueueQueryTasksRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueQueryTasksRequest.Merge(dst, src)
+
+type TaskQueueQueryTasksRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId         []byte `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
+	QueueName     []byte `protobuf:"bytes,2,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	StartTaskName []byte `protobuf:"bytes,3,opt,name=start_task_name,json=startTaskName,proto3,oneof" json:"start_task_name,omitempty"`
+	StartEtaUsec  *int64 `protobuf:"varint,4,opt,name=start_eta_usec,json=startEtaUsec,proto3,oneof" json:"start_eta_usec,omitempty"`
+	StartTag      []byte `protobuf:"bytes,6,opt,name=start_tag,json=startTag,proto3,oneof" json:"start_tag,omitempty"`
+	MaxRows       *int32 `protobuf:"varint,5,opt,name=max_rows,json=maxRows,proto3,oneof" json:"max_rows,omitempty"`
 }
-func (m *TaskQueueQueryTasksRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueQueryTasksRequest.Size(m)
+
+func (x *TaskQueueQueryTasksRequest) Reset() {
+	*x = TaskQueueQueryTasksRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[29]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueQueryTasksRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueQueryTasksRequest.DiscardUnknown(m)
+
+func (x *TaskQueueQueryTasksRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueQueryTasksRequest proto.InternalMessageInfo
+func (*TaskQueueQueryTasksRequest) ProtoMessage() {}
+
+func (x *TaskQueueQueryTasksRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
+}
 
-const Default_TaskQueueQueryTasksRequest_MaxRows int32 = 1
+// Deprecated: Use TaskQueueQueryTasksRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueQueryTasksRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{29}
+}
 
-func (m *TaskQueueQueryTasksRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueQueryTasksRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueueQueryTasksRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueueQueryTasksRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
 	}
 	return nil
 }
 
-func (m *TaskQueueQueryTasksRequest) GetStartTaskName() []byte {
-	if m != nil {
-		return m.StartTaskName
+func (x *TaskQueueQueryTasksRequest) GetStartTaskName() []byte {
+	if x != nil {
+		return x.StartTaskName
 	}
 	return nil
 }
 
-func (m *TaskQueueQueryTasksRequest) GetStartEtaUsec() int64 {
-	if m != nil && m.StartEtaUsec != nil {
-		return *m.StartEtaUsec
+func (x *TaskQueueQueryTasksRequest) GetStartEtaUsec() int64 {
+	if x != nil && x.StartEtaUsec != nil {
+		return *x.StartEtaUsec
 	}
 	return 0
 }
 
-func (m *TaskQueueQueryTasksRequest) GetStartTag() []byte {
-	if m != nil {
-		return m.StartTag
+func (x *TaskQueueQueryTasksRequest) GetStartTag() []byte {
+	if x != nil {
+		return x.StartTag
 	}
 	return nil
 }
 
-func (m *TaskQueueQueryTasksRequest) GetMaxRows() int32 {
-	if m != nil && m.MaxRows != nil {
-		return *m.MaxRows
+func (x *TaskQueueQueryTasksRequest) GetMaxRows() int32 {
+	if x != nil && x.MaxRows != nil {
+		return *x.MaxRows
 	}
-	return Default_TaskQueueQueryTasksRequest_MaxRows
+	return 0
 }
 
 type TaskQueueQueryTasksResponse struct {
-	Task                 []*TaskQueueQueryTasksResponse_Task `protobuf:"group,1,rep,name=Task,json=task" json:"task,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                            `json:"-"`
-	XXX_unrecognized     []byte                              `json:"-"`
-	XXX_sizecache        int32                               `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueQueryTasksResponse) Reset()         { *m = TaskQueueQueryTasksResponse{} }
-func (m *TaskQueueQueryTasksResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueQueryTasksResponse) ProtoMessage()    {}
-func (*TaskQueueQueryTasksResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{30}
-}
-func (m *TaskQueueQueryTasksResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse.Unmarshal(m, b)
-}
-func (m *TaskQueueQueryTasksResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueQueryTasksResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueQueryTasksResponse.Merge(dst, src)
+	Task []*TaskQueueQueryTasksResponse_TaskType `protobuf:"bytes,1,rep,name=Task,proto3" json:"Task,omitempty"`
 }
-func (m *TaskQueueQueryTasksResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse.Size(m)
+
+func (x *TaskQueueQueryTasksResponse) Reset() {
+	*x = TaskQueueQueryTasksResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[30]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueQueryTasksResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueQueryTasksResponse.DiscardUnknown(m)
+
+func (x *TaskQueueQueryTasksResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueQueryTasksResponse proto.InternalMessageInfo
+func (*TaskQueueQueryTasksResponse) ProtoMessage() {}
 
-func (m *TaskQueueQueryTasksResponse) GetTask() []*TaskQueueQueryTasksResponse_Task {
-	if m != nil {
-		return m.Task
+func (x *TaskQueueQueryTasksResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 nil
+	return mi.MessageOf(x)
 }
 
-type TaskQueueQueryTasksResponse_Task struct {
-	TaskName             []byte                                          `protobuf:"bytes,2,req,name=task_name,json=taskName" json:"task_name,omitempty"`
-	EtaUsec              *int64                                          `protobuf:"varint,3,req,name=eta_usec,json=etaUsec" json:"eta_usec,omitempty"`
-	Url                  []byte                                          `protobuf:"bytes,4,opt,name=url" json:"url,omitempty"`
-	Method               *TaskQueueQueryTasksResponse_Task_RequestMethod `protobuf:"varint,5,opt,name=method,enum=appengine.TaskQueueQueryTasksResponse_Task_RequestMethod" json:"method,omitempty"`
-	RetryCount           *int32                                          `protobuf:"varint,6,opt,name=retry_count,json=retryCount,def=0" json:"retry_count,omitempty"`
-	Header               []*TaskQueueQueryTasksResponse_Task_Header      `protobuf:"group,7,rep,name=Header,json=header" json:"header,omitempty"`
-	BodySize             *int32                                          `protobuf:"varint,10,opt,name=body_size,json=bodySize" json:"body_size,omitempty"`
-	Body                 []byte                                          `protobuf:"bytes,11,opt,name=body" json:"body,omitempty"`
-	CreationTimeUsec     *int64                                          `protobuf:"varint,12,req,name=creation_time_usec,json=creationTimeUsec" json:"creation_time_usec,omitempty"`
-	Crontimetable        *TaskQueueQueryTasksResponse_Task_CronTimetable `protobuf:"group,13,opt,name=CronTimetable,json=crontimetable" json:"crontimetable,omitempty"`
-	Runlog               *TaskQueueQueryTasksResponse_Task_RunLog        `protobuf:"group,16,opt,name=RunLog,json=runlog" json:"runlog,omitempty"`
-	Description          []byte                                          `protobuf:"bytes,21,opt,name=description" json:"description,omitempty"`
-	Payload              *TaskPayload                                    `protobuf:"bytes,22,opt,name=payload" json:"payload,omitempty"`
-	RetryParameters      *TaskQueueRetryParameters                       `protobuf:"bytes,23,opt,name=retry_parameters,json=retryParameters" json:"retry_parameters,omitempty"`
-	FirstTryUsec         *int64                                          `protobuf:"varint,24,opt,name=first_try_usec,json=firstTryUsec" json:"first_try_usec,omitempty"`
-	Tag                  []byte                                          `protobuf:"bytes,25,opt,name=tag" json:"tag,omitempty"`
-	ExecutionCount       *int32                                          `protobuf:"varint,26,opt,name=execution_count,json=executionCount,def=0" json:"execution_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                        `json:"-"`
-	XXX_unrecognized     []byte                                          `json:"-"`
-	XXX_sizecache        int32                                           `json:"-"`
+// Deprecated: Use TaskQueueQueryTasksResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueQueryTasksResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{30}
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) Reset()         { *m = TaskQueueQueryTasksResponse_Task{} }
-func (m *TaskQueueQueryTasksResponse_Task) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueQueryTasksResponse_Task) ProtoMessage()    {}
-func (*TaskQueueQueryTasksResponse_Task) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{30, 0}
-}
-func (m *TaskQueueQueryTasksResponse_Task) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task.Unmarshal(m, b)
-}
-func (m *TaskQueueQueryTasksResponse_Task) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task.Marshal(b, m, deterministic)
-}
-func (dst *TaskQueueQueryTasksResponse_Task) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueQueryTasksResponse_Task.Merge(dst, src)
-}
-func (m *TaskQueueQueryTasksResponse_Task) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task.Size(m)
-}
-func (m *TaskQueueQueryTasksResponse_Task) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueQueryTasksResponse_Task.DiscardUnknown(m)
+func (x *TaskQueueQueryTasksResponse) GetTask() []*TaskQueueQueryTasksResponse_TaskType {
+	if x != nil {
+		return x.Task
+	}
+	return nil
 }
 
-var xxx_messageInfo_TaskQueueQueryTasksResponse_Task proto.InternalMessageInfo
-
-const Default_TaskQueueQueryTasksResponse_Task_RetryCount int32 = 0
-const Default_TaskQueueQueryTasksResponse_Task_ExecutionCount int32 = 0
+type TaskQueueFetchTaskRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueQueryTasksResponse_Task) GetTaskName() []byte {
-	if m != nil {
-		return m.TaskName
-	}
-	return nil
+	AppId     []byte `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3,oneof" json:"app_id,omitempty"`
+	QueueName []byte `protobuf:"bytes,2,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	TaskName  []byte `protobuf:"bytes,3,opt,name=task_name,json=taskName,proto3" json:"task_name,omitempty"`
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetEtaUsec() int64 {
-	if m != nil && m.EtaUsec != nil {
-		return *m.EtaUsec
+func (x *TaskQueueFetchTaskRequest) Reset() {
+	*x = TaskQueueFetchTaskRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[31]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetUrl() []byte {
-	if m != nil {
-		return m.Url
-	}
-	return nil
+func (x *TaskQueueFetchTaskRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetMethod() TaskQueueQueryTasksResponse_Task_RequestMethod {
-	if m != nil && m.Method != nil {
-		return *m.Method
+func (*TaskQueueFetchTaskRequest) ProtoMessage() {}
+
+func (x *TaskQueueFetchTaskRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 TaskQueueQueryTasksResponse_Task_GET
+	return mi.MessageOf(x)
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetRetryCount() int32 {
-	if m != nil && m.RetryCount != nil {
-		return *m.RetryCount
-	}
-	return Default_TaskQueueQueryTasksResponse_Task_RetryCount
+// Deprecated: Use TaskQueueFetchTaskRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueFetchTaskRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{31}
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetHeader() []*TaskQueueQueryTasksResponse_Task_Header {
-	if m != nil {
-		return m.Header
+func (x *TaskQueueFetchTaskRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetBodySize() int32 {
-	if m != nil && m.BodySize != nil {
-		return *m.BodySize
+func (x *TaskQueueFetchTaskRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
 	}
-	return 0
+	return nil
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetBody() []byte {
-	if m != nil {
-		return m.Body
+func (x *TaskQueueFetchTaskRequest) GetTaskName() []byte {
+	if x != nil {
+		return x.TaskName
 	}
 	return nil
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetCreationTimeUsec() int64 {
-	if m != nil && m.CreationTimeUsec != nil {
-		return *m.CreationTimeUsec
-	}
-	return 0
+type TaskQueueFetchTaskResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Task *TaskQueueQueryTasksResponse `protobuf:"bytes,1,opt,name=task,proto3" json:"task,omitempty"`
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetCrontimetable() *TaskQueueQueryTasksResponse_Task_CronTimetable {
-	if m != nil {
-		return m.Crontimetable
+func (x *TaskQueueFetchTaskResponse) Reset() {
+	*x = TaskQueueFetchTaskResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[32]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetRunlog() *TaskQueueQueryTasksResponse_Task_RunLog {
-	if m != nil {
-		return m.Runlog
-	}
-	return nil
+func (x *TaskQueueFetchTaskResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetDescription() []byte {
-	if m != nil {
-		return m.Description
+func (*TaskQueueFetchTaskResponse) ProtoMessage() {}
+
+func (x *TaskQueueFetchTaskResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 nil
+	return mi.MessageOf(x)
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetPayload() *TaskPayload {
-	if m != nil {
-		return m.Payload
-	}
-	return nil
+// Deprecated: Use TaskQueueFetchTaskResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueFetchTaskResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{32}
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetRetryParameters() *TaskQueueRetryParameters {
-	if m != nil {
-		return m.RetryParameters
+func (x *TaskQueueFetchTaskResponse) GetTask() *TaskQueueQueryTasksResponse {
+	if x != nil {
+		return x.Task
 	}
 	return nil
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetFirstTryUsec() int64 {
-	if m != nil && m.FirstTryUsec != nil {
-		return *m.FirstTryUsec
+type TaskQueueUpdateStorageLimitRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AppId []byte `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+	Limit int64  `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
+}
+
+func (x *TaskQueueUpdateStorageLimitRequest) Reset() {
+	*x = TaskQueueUpdateStorageLimitRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[33]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetTag() []byte {
-	if m != nil {
-		return m.Tag
+func (x *TaskQueueUpdateStorageLimitRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TaskQueueUpdateStorageLimitRequest) ProtoMessage() {}
+
+func (x *TaskQueueUpdateStorageLimitRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 TaskQueueUpdateStorageLimitRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueUpdateStorageLimitRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{33}
+}
+
+func (x *TaskQueueUpdateStorageLimitRequest) GetAppId() []byte {
+	if x != nil {
+		return x.AppId
 	}
 	return nil
 }
 
-func (m *TaskQueueQueryTasksResponse_Task) GetExecutionCount() int32 {
-	if m != nil && m.ExecutionCount != nil {
-		return *m.ExecutionCount
+func (x *TaskQueueUpdateStorageLimitRequest) GetLimit() int64 {
+	if x != nil {
+		return x.Limit
 	}
-	return Default_TaskQueueQueryTasksResponse_Task_ExecutionCount
+	return 0
 }
 
-type TaskQueueQueryTasksResponse_Task_Header struct {
-	Key                  []byte   `protobuf:"bytes,8,req,name=key" json:"key,omitempty"`
-	Value                []byte   `protobuf:"bytes,9,req,name=value" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+type TaskQueueUpdateStorageLimitResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	NewLimit int64 `protobuf:"varint,1,opt,name=new_limit,json=newLimit,proto3" json:"new_limit,omitempty"`
 }
 
-func (m *TaskQueueQueryTasksResponse_Task_Header) Reset() {
-	*m = TaskQueueQueryTasksResponse_Task_Header{}
+func (x *TaskQueueUpdateStorageLimitResponse) Reset() {
+	*x = TaskQueueUpdateStorageLimitResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[34]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueQueryTasksResponse_Task_Header) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueQueryTasksResponse_Task_Header) ProtoMessage()    {}
-func (*TaskQueueQueryTasksResponse_Task_Header) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{30, 0, 0}
+
+func (x *TaskQueueUpdateStorageLimitResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueQueryTasksResponse_Task_Header) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task_Header.Unmarshal(m, b)
+
+func (*TaskQueueUpdateStorageLimitResponse) ProtoMessage() {}
+
+func (x *TaskQueueUpdateStorageLimitResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
-func (m *TaskQueueQueryTasksResponse_Task_Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task_Header.Marshal(b, m, deterministic)
+
+// Deprecated: Use TaskQueueUpdateStorageLimitResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueUpdateStorageLimitResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *TaskQueueUpdateStorageLimitResponse) GetNewLimit() int64 {
+	if x != nil {
+		return x.NewLimit
+	}
+	return 0
 }
-func (dst *TaskQueueQueryTasksResponse_Task_Header) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueQueryTasksResponse_Task_Header.Merge(dst, src)
+
+type TaskQueueQueryAndOwnTasksRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	QueueName    []byte  `protobuf:"bytes,1,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	LeaseSeconds float64 `protobuf:"fixed64,2,opt,name=lease_seconds,json=leaseSeconds,proto3" json:"lease_seconds,omitempty"`
+	MaxTasks     int64   `protobuf:"varint,3,opt,name=max_tasks,json=maxTasks,proto3" json:"max_tasks,omitempty"`
+	GroupByTag   *bool   `protobuf:"varint,4,opt,name=group_by_tag,json=groupByTag,proto3,oneof" json:"group_by_tag,omitempty"`
+	Tag          []byte  `protobuf:"bytes,5,opt,name=tag,proto3,oneof" json:"tag,omitempty"`
 }
-func (m *TaskQueueQueryTasksResponse_Task_Header) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task_Header.Size(m)
+
+func (x *TaskQueueQueryAndOwnTasksRequest) Reset() {
+	*x = TaskQueueQueryAndOwnTasksRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[35]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueQueryTasksResponse_Task_Header) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueQueryTasksResponse_Task_Header.DiscardUnknown(m)
+
+func (x *TaskQueueQueryAndOwnTasksRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueQueryTasksResponse_Task_Header proto.InternalMessageInfo
+func (*TaskQueueQueryAndOwnTasksRequest) ProtoMessage() {}
 
-func (m *TaskQueueQueryTasksResponse_Task_Header) GetKey() []byte {
-	if m != nil {
-		return m.Key
+func (x *TaskQueueQueryAndOwnTasksRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 nil
+	return mi.MessageOf(x)
 }
 
-func (m *TaskQueueQueryTasksResponse_Task_Header) GetValue() []byte {
-	if m != nil {
-		return m.Value
+// Deprecated: Use TaskQueueQueryAndOwnTasksRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueQueryAndOwnTasksRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{35}
+}
+
+func (x *TaskQueueQueryAndOwnTasksRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
 	}
 	return nil
 }
 
-type TaskQueueQueryTasksResponse_Task_CronTimetable struct {
-	Schedule             []byte   `protobuf:"bytes,14,req,name=schedule" json:"schedule,omitempty"`
-	Timezone             []byte   `protobuf:"bytes,15,req,name=timezone" json:"timezone,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TaskQueueQueryAndOwnTasksRequest) GetLeaseSeconds() float64 {
+	if x != nil {
+		return x.LeaseSeconds
+	}
+	return 0
 }
 
-func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) Reset() {
-	*m = TaskQueueQueryTasksResponse_Task_CronTimetable{}
-}
-func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) String() string {
-	return proto.CompactTextString(m)
-}
-func (*TaskQueueQueryTasksResponse_Task_CronTimetable) ProtoMessage() {}
-func (*TaskQueueQueryTasksResponse_Task_CronTimetable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{30, 0, 1}
+func (x *TaskQueueQueryAndOwnTasksRequest) GetMaxTasks() int64 {
+	if x != nil {
+		return x.MaxTasks
+	}
+	return 0
 }
-func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task_CronTimetable.Unmarshal(m, b)
+
+func (x *TaskQueueQueryAndOwnTasksRequest) GetGroupByTag() bool {
+	if x != nil && x.GroupByTag != nil {
+		return *x.GroupByTag
+	}
+	return false
 }
-func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task_CronTimetable.Marshal(b, m, deterministic)
+
+func (x *TaskQueueQueryAndOwnTasksRequest) GetTag() []byte {
+	if x != nil {
+		return x.Tag
+	}
+	return nil
 }
-func (dst *TaskQueueQueryTasksResponse_Task_CronTimetable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueQueryTasksResponse_Task_CronTimetable.Merge(dst, src)
+
+type TaskQueueQueryAndOwnTasksResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Task []*TaskQueueQueryAndOwnTasksResponse_TaskType `protobuf:"bytes,1,rep,name=Task,proto3" json:"Task,omitempty"`
 }
-func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task_CronTimetable.Size(m)
+
+func (x *TaskQueueQueryAndOwnTasksResponse) Reset() {
+	*x = TaskQueueQueryAndOwnTasksResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[36]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueQueryTasksResponse_Task_CronTimetable.DiscardUnknown(m)
+
+func (x *TaskQueueQueryAndOwnTasksResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueQueryTasksResponse_Task_CronTimetable proto.InternalMessageInfo
+func (*TaskQueueQueryAndOwnTasksResponse) ProtoMessage() {}
 
-func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) GetSchedule() []byte {
-	if m != nil {
-		return m.Schedule
+func (x *TaskQueueQueryAndOwnTasksResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 nil
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TaskQueueQueryAndOwnTasksResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueQueryAndOwnTasksResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{36}
 }
 
-func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) GetTimezone() []byte {
-	if m != nil {
-		return m.Timezone
+func (x *TaskQueueQueryAndOwnTasksResponse) GetTask() []*TaskQueueQueryAndOwnTasksResponse_TaskType {
+	if x != nil {
+		return x.Task
 	}
 	return nil
 }
 
-type TaskQueueQueryTasksResponse_Task_RunLog struct {
-	DispatchedUsec       *int64   `protobuf:"varint,17,req,name=dispatched_usec,json=dispatchedUsec" json:"dispatched_usec,omitempty"`
-	LagUsec              *int64   `protobuf:"varint,18,req,name=lag_usec,json=lagUsec" json:"lag_usec,omitempty"`
-	ElapsedUsec          *int64   `protobuf:"varint,19,req,name=elapsed_usec,json=elapsedUsec" json:"elapsed_usec,omitempty"`
-	ResponseCode         *int64   `protobuf:"varint,20,opt,name=response_code,json=responseCode" json:"response_code,omitempty"`
-	RetryReason          *string  `protobuf:"bytes,27,opt,name=retry_reason,json=retryReason" json:"retry_reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+type TaskQueueModifyTaskLeaseRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) Reset() {
-	*m = TaskQueueQueryTasksResponse_Task_RunLog{}
+	QueueName    []byte  `protobuf:"bytes,1,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	TaskName     []byte  `protobuf:"bytes,2,opt,name=task_name,json=taskName,proto3" json:"task_name,omitempty"`
+	EtaUsec      int64   `protobuf:"varint,3,opt,name=eta_usec,json=etaUsec,proto3" json:"eta_usec,omitempty"`
+	LeaseSeconds float64 `protobuf:"fixed64,4,opt,name=lease_seconds,json=leaseSeconds,proto3" json:"lease_seconds,omitempty"`
 }
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueQueryTasksResponse_Task_RunLog) ProtoMessage()    {}
-func (*TaskQueueQueryTasksResponse_Task_RunLog) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{30, 0, 2}
-}
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task_RunLog.Unmarshal(m, b)
+
+func (x *TaskQueueModifyTaskLeaseRequest) Reset() {
+	*x = TaskQueueModifyTaskLeaseRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[37]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task_RunLog.Marshal(b, m, deterministic)
+
+func (x *TaskQueueModifyTaskLeaseRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (dst *TaskQueueQueryTasksResponse_Task_RunLog) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueQueryTasksResponse_Task_RunLog.Merge(dst, src)
+
+func (*TaskQueueModifyTaskLeaseRequest) ProtoMessage() {}
+
+func (x *TaskQueueModifyTaskLeaseRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueQueryTasksResponse_Task_RunLog.Size(m)
+
+// Deprecated: Use TaskQueueModifyTaskLeaseRequest.ProtoReflect.Descriptor instead.
+func (*TaskQueueModifyTaskLeaseRequest) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{37}
 }
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueQueryTasksResponse_Task_RunLog.DiscardUnknown(m)
+
+func (x *TaskQueueModifyTaskLeaseRequest) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
+	}
+	return nil
 }
 
-var xxx_messageInfo_TaskQueueQueryTasksResponse_Task_RunLog proto.InternalMessageInfo
+func (x *TaskQueueModifyTaskLeaseRequest) GetTaskName() []byte {
+	if x != nil {
+		return x.TaskName
+	}
+	return nil
+}
 
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) GetDispatchedUsec() int64 {
-	if m != nil && m.DispatchedUsec != nil {
-		return *m.DispatchedUsec
+func (x *TaskQueueModifyTaskLeaseRequest) GetEtaUsec() int64 {
+	if x != nil {
+		return x.EtaUsec
 	}
 	return 0
 }
 
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) GetLagUsec() int64 {
-	if m != nil && m.LagUsec != nil {
-		return *m.LagUsec
+func (x *TaskQueueModifyTaskLeaseRequest) GetLeaseSeconds() float64 {
+	if x != nil {
+		return x.LeaseSeconds
 	}
 	return 0
 }
 
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) GetElapsedUsec() int64 {
-	if m != nil && m.ElapsedUsec != nil {
-		return *m.ElapsedUsec
+type TaskQueueModifyTaskLeaseResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UpdatedEtaUsec int64 `protobuf:"varint,1,opt,name=updated_eta_usec,json=updatedEtaUsec,proto3" json:"updated_eta_usec,omitempty"`
+}
+
+func (x *TaskQueueModifyTaskLeaseResponse) Reset() {
+	*x = TaskQueueModifyTaskLeaseResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[38]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) GetResponseCode() int64 {
-	if m != nil && m.ResponseCode != nil {
-		return *m.ResponseCode
+func (x *TaskQueueModifyTaskLeaseResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TaskQueueModifyTaskLeaseResponse) ProtoMessage() {}
+
+func (x *TaskQueueModifyTaskLeaseResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 TaskQueueModifyTaskLeaseResponse.ProtoReflect.Descriptor instead.
+func (*TaskQueueModifyTaskLeaseResponse) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{38}
+}
+
+func (x *TaskQueueModifyTaskLeaseResponse) GetUpdatedEtaUsec() int64 {
+	if x != nil {
+		return x.UpdatedEtaUsec
 	}
 	return 0
 }
 
-func (m *TaskQueueQueryTasksResponse_Task_RunLog) GetRetryReason() string {
-	if m != nil && m.RetryReason != nil {
-		return *m.RetryReason
+type TaskQueueAddRequest_HeaderType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Key   []byte `protobuf:"bytes,7,opt,name=key,proto3" json:"key,omitempty"`
+	Value []byte `protobuf:"bytes,8,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (x *TaskQueueAddRequest_HeaderType) Reset() {
+	*x = TaskQueueAddRequest_HeaderType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[39]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-type TaskQueueFetchTaskRequest struct {
-	AppId                []byte   `protobuf:"bytes,1,opt,name=app_id,json=appId" json:"app_id,omitempty"`
-	QueueName            []byte   `protobuf:"bytes,2,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	TaskName             []byte   `protobuf:"bytes,3,req,name=task_name,json=taskName" json:"task_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TaskQueueAddRequest_HeaderType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *TaskQueueFetchTaskRequest) Reset()         { *m = TaskQueueFetchTaskRequest{} }
-func (m *TaskQueueFetchTaskRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueFetchTaskRequest) ProtoMessage()    {}
-func (*TaskQueueFetchTaskRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{31}
+func (*TaskQueueAddRequest_HeaderType) ProtoMessage() {}
+
+func (x *TaskQueueAddRequest_HeaderType) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
-func (m *TaskQueueFetchTaskRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueFetchTaskRequest.Unmarshal(m, b)
+
+// Deprecated: Use TaskQueueAddRequest_HeaderType.ProtoReflect.Descriptor instead.
+func (*TaskQueueAddRequest_HeaderType) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{6, 0}
 }
-func (m *TaskQueueFetchTaskRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueFetchTaskRequest.Marshal(b, m, deterministic)
+
+func (x *TaskQueueAddRequest_HeaderType) GetKey() []byte {
+	if x != nil {
+		return x.Key
+	}
+	return nil
 }
-func (dst *TaskQueueFetchTaskRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueFetchTaskRequest.Merge(dst, src)
+
+func (x *TaskQueueAddRequest_HeaderType) GetValue() []byte {
+	if x != nil {
+		return x.Value
+	}
+	return nil
 }
-func (m *TaskQueueFetchTaskRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueFetchTaskRequest.Size(m)
+
+type TaskQueueAddRequest_CronTimetableType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Schedule []byte `protobuf:"bytes,13,opt,name=schedule,proto3" json:"schedule,omitempty"`
+	Timezone []byte `protobuf:"bytes,14,opt,name=timezone,proto3" json:"timezone,omitempty"`
 }
-func (m *TaskQueueFetchTaskRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueFetchTaskRequest.DiscardUnknown(m)
+
+func (x *TaskQueueAddRequest_CronTimetableType) Reset() {
+	*x = TaskQueueAddRequest_CronTimetableType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[40]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-var xxx_messageInfo_TaskQueueFetchTaskRequest proto.InternalMessageInfo
+func (x *TaskQueueAddRequest_CronTimetableType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TaskQueueAddRequest_CronTimetableType) ProtoMessage() {}
 
-func (m *TaskQueueFetchTaskRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueAddRequest_CronTimetableType) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 nil
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TaskQueueAddRequest_CronTimetableType.ProtoReflect.Descriptor instead.
+func (*TaskQueueAddRequest_CronTimetableType) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{6, 1}
 }
 
-func (m *TaskQueueFetchTaskRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueueAddRequest_CronTimetableType) GetSchedule() []byte {
+	if x != nil {
+		return x.Schedule
 	}
 	return nil
 }
 
-func (m *TaskQueueFetchTaskRequest) GetTaskName() []byte {
-	if m != nil {
-		return m.TaskName
+func (x *TaskQueueAddRequest_CronTimetableType) GetTimezone() []byte {
+	if x != nil {
+		return x.Timezone
 	}
 	return nil
 }
 
-type TaskQueueFetchTaskResponse struct {
-	Task                 *TaskQueueQueryTasksResponse `protobuf:"bytes,1,req,name=task" json:"task,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+type TaskQueueBulkAddResponse_TaskResultType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Result         TaskQueueServiceError_ErrorCode `protobuf:"varint,2,opt,name=result,proto3,enum=appengine.TaskQueueServiceError_ErrorCode" json:"result,omitempty"`
+	ChosenTaskName []byte                          `protobuf:"bytes,3,opt,name=chosen_task_name,json=chosenTaskName,proto3,oneof" json:"chosen_task_name,omitempty"`
 }
 
-func (m *TaskQueueFetchTaskResponse) Reset()         { *m = TaskQueueFetchTaskResponse{} }
-func (m *TaskQueueFetchTaskResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueFetchTaskResponse) ProtoMessage()    {}
-func (*TaskQueueFetchTaskResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{32}
+func (x *TaskQueueBulkAddResponse_TaskResultType) Reset() {
+	*x = TaskQueueBulkAddResponse_TaskResultType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[41]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueFetchTaskResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueFetchTaskResponse.Unmarshal(m, b)
+
+func (x *TaskQueueBulkAddResponse_TaskResultType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueFetchTaskResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueFetchTaskResponse.Marshal(b, m, deterministic)
+
+func (*TaskQueueBulkAddResponse_TaskResultType) ProtoMessage() {}
+
+func (x *TaskQueueBulkAddResponse_TaskResultType) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
-func (dst *TaskQueueFetchTaskResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueFetchTaskResponse.Merge(dst, src)
+
+// Deprecated: Use TaskQueueBulkAddResponse_TaskResultType.ProtoReflect.Descriptor instead.
+func (*TaskQueueBulkAddResponse_TaskResultType) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{9, 0}
 }
-func (m *TaskQueueFetchTaskResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueFetchTaskResponse.Size(m)
+
+func (x *TaskQueueBulkAddResponse_TaskResultType) GetResult() TaskQueueServiceError_ErrorCode {
+	if x != nil {
+		return x.Result
+	}
+	return TaskQueueServiceError_OK
 }
-func (m *TaskQueueFetchTaskResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueFetchTaskResponse.DiscardUnknown(m)
+
+func (x *TaskQueueBulkAddResponse_TaskResultType) GetChosenTaskName() []byte {
+	if x != nil {
+		return x.ChosenTaskName
+	}
+	return nil
 }
 
-var xxx_messageInfo_TaskQueueFetchTaskResponse proto.InternalMessageInfo
+type TaskQueueFetchQueuesResponse_QueueType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *TaskQueueFetchTaskResponse) GetTask() *TaskQueueQueryTasksResponse {
-	if m != nil {
-		return m.Task
+	QueueName             []byte                    `protobuf:"bytes,2,opt,name=queue_name,json=queueName,proto3" json:"queue_name,omitempty"`
+	BucketRefillPerSecond float64                   `protobuf:"fixed64,3,opt,name=bucket_refill_per_second,json=bucketRefillPerSecond,proto3" json:"bucket_refill_per_second,omitempty"`
+	BucketCapacity        float64                   `protobuf:"fixed64,4,opt,name=bucket_capacity,json=bucketCapacity,proto3" json:"bucket_capacity,omitempty"`
+	UserSpecifiedRate     *string                   `protobuf:"bytes,5,opt,name=user_specified_rate,json=userSpecifiedRate,proto3,oneof" json:"user_specified_rate,omitempty"`
+	Paused                bool                      `protobuf:"varint,6,opt,name=paused,proto3" json:"paused,omitempty"`
+	RetryParameters       *TaskQueueRetryParameters `protobuf:"bytes,7,opt,name=retry_parameters,json=retryParameters,proto3,oneof" json:"retry_parameters,omitempty"`
+	MaxConcurrentRequests *int32                    `protobuf:"varint,8,opt,name=max_concurrent_requests,json=maxConcurrentRequests,proto3,oneof" json:"max_concurrent_requests,omitempty"`
+	Mode                  *TaskQueueMode_Mode       `protobuf:"varint,9,opt,name=mode,proto3,enum=appengine.TaskQueueMode_Mode,oneof" json:"mode,omitempty"`
+	Acl                   *TaskQueueAcl             `protobuf:"bytes,10,opt,name=acl,proto3,oneof" json:"acl,omitempty"`
+	HeaderOverride        []*TaskQueueHttpHeader    `protobuf:"bytes,11,rep,name=header_override,json=headerOverride,proto3" json:"header_override,omitempty"`
+	CreatorName           *string                   `protobuf:"bytes,12,opt,name=creator_name,json=creatorName,proto3,oneof" json:"creator_name,omitempty"`
+}
+
+func (x *TaskQueueFetchQueuesResponse_QueueType) Reset() {
+	*x = TaskQueueFetchQueuesResponse_QueueType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[42]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-type TaskQueueUpdateStorageLimitRequest struct {
-	AppId                []byte   `protobuf:"bytes,1,req,name=app_id,json=appId" json:"app_id,omitempty"`
-	Limit                *int64   `protobuf:"varint,2,req,name=limit" json:"limit,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TaskQueueFetchQueuesResponse_QueueType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *TaskQueueUpdateStorageLimitRequest) Reset()         { *m = TaskQueueUpdateStorageLimitRequest{} }
-func (m *TaskQueueUpdateStorageLimitRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueUpdateStorageLimitRequest) ProtoMessage()    {}
-func (*TaskQueueUpdateStorageLimitRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{33}
+func (*TaskQueueFetchQueuesResponse_QueueType) ProtoMessage() {}
+
+func (x *TaskQueueFetchQueuesResponse_QueueType) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
-func (m *TaskQueueUpdateStorageLimitRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueUpdateStorageLimitRequest.Unmarshal(m, b)
+
+// Deprecated: Use TaskQueueFetchQueuesResponse_QueueType.ProtoReflect.Descriptor instead.
+func (*TaskQueueFetchQueuesResponse_QueueType) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{17, 0}
 }
-func (m *TaskQueueUpdateStorageLimitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueUpdateStorageLimitRequest.Marshal(b, m, deterministic)
+
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetQueueName() []byte {
+	if x != nil {
+		return x.QueueName
+	}
+	return nil
 }
-func (dst *TaskQueueUpdateStorageLimitRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueUpdateStorageLimitRequest.Merge(dst, src)
+
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetBucketRefillPerSecond() float64 {
+	if x != nil {
+		return x.BucketRefillPerSecond
+	}
+	return 0
 }
-func (m *TaskQueueUpdateStorageLimitRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueUpdateStorageLimitRequest.Size(m)
+
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetBucketCapacity() float64 {
+	if x != nil {
+		return x.BucketCapacity
+	}
+	return 0
 }
-func (m *TaskQueueUpdateStorageLimitRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueUpdateStorageLimitRequest.DiscardUnknown(m)
+
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetUserSpecifiedRate() string {
+	if x != nil && x.UserSpecifiedRate != nil {
+		return *x.UserSpecifiedRate
+	}
+	return ""
 }
 
-var xxx_messageInfo_TaskQueueUpdateStorageLimitRequest proto.InternalMessageInfo
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetPaused() bool {
+	if x != nil {
+		return x.Paused
+	}
+	return false
+}
 
-func (m *TaskQueueUpdateStorageLimitRequest) GetAppId() []byte {
-	if m != nil {
-		return m.AppId
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetRetryParameters() *TaskQueueRetryParameters {
+	if x != nil {
+		return x.RetryParameters
 	}
 	return nil
 }
 
-func (m *TaskQueueUpdateStorageLimitRequest) GetLimit() int64 {
-	if m != nil && m.Limit != nil {
-		return *m.Limit
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetMaxConcurrentRequests() int32 {
+	if x != nil && x.MaxConcurrentRequests != nil {
+		return *x.MaxConcurrentRequests
 	}
 	return 0
 }
 
-type TaskQueueUpdateStorageLimitResponse struct {
-	NewLimit             *int64   `protobuf:"varint,1,req,name=new_limit,json=newLimit" json:"new_limit,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetMode() TaskQueueMode_Mode {
+	if x != nil && x.Mode != nil {
+		return *x.Mode
+	}
+	return TaskQueueMode_PUSH
 }
 
-func (m *TaskQueueUpdateStorageLimitResponse) Reset()         { *m = TaskQueueUpdateStorageLimitResponse{} }
-func (m *TaskQueueUpdateStorageLimitResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueUpdateStorageLimitResponse) ProtoMessage()    {}
-func (*TaskQueueUpdateStorageLimitResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{34}
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetAcl() *TaskQueueAcl {
+	if x != nil {
+		return x.Acl
+	}
+	return nil
 }
-func (m *TaskQueueUpdateStorageLimitResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueUpdateStorageLimitResponse.Unmarshal(m, b)
+
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetHeaderOverride() []*TaskQueueHttpHeader {
+	if x != nil {
+		return x.HeaderOverride
+	}
+	return nil
 }
-func (m *TaskQueueUpdateStorageLimitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueUpdateStorageLimitResponse.Marshal(b, m, deterministic)
+
+func (x *TaskQueueFetchQueuesResponse_QueueType) GetCreatorName() string {
+	if x != nil && x.CreatorName != nil {
+		return *x.CreatorName
+	}
+	return ""
 }
-func (dst *TaskQueueUpdateStorageLimitResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueUpdateStorageLimitResponse.Merge(dst, src)
+
+type TaskQueueFetchQueueStatsResponse_QueueStatsType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	NumTasks      int32                      `protobuf:"varint,2,opt,name=num_tasks,json=numTasks,proto3" json:"num_tasks,omitempty"`
+	OldestEtaUsec int64                      `protobuf:"varint,3,opt,name=oldest_eta_usec,json=oldestEtaUsec,proto3" json:"oldest_eta_usec,omitempty"`
+	ScannerInfo   *TaskQueueScannerQueueInfo `protobuf:"bytes,4,opt,name=scanner_info,json=scannerInfo,proto3,oneof" json:"scanner_info,omitempty"`
 }
-func (m *TaskQueueUpdateStorageLimitResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueUpdateStorageLimitResponse.Size(m)
+
+func (x *TaskQueueFetchQueueStatsResponse_QueueStatsType) Reset() {
+	*x = TaskQueueFetchQueueStatsResponse_QueueStatsType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[43]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueUpdateStorageLimitResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueUpdateStorageLimitResponse.DiscardUnknown(m)
+
+func (x *TaskQueueFetchQueueStatsResponse_QueueStatsType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_TaskQueueUpdateStorageLimitResponse proto.InternalMessageInfo
+func (*TaskQueueFetchQueueStatsResponse_QueueStatsType) ProtoMessage() {}
 
-func (m *TaskQueueUpdateStorageLimitResponse) GetNewLimit() int64 {
-	if m != nil && m.NewLimit != nil {
-		return *m.NewLimit
+func (x *TaskQueueFetchQueueStatsResponse_QueueStatsType) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 0
+	return mi.MessageOf(x)
 }
 
-type TaskQueueQueryAndOwnTasksRequest struct {
-	QueueName            []byte   `protobuf:"bytes,1,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	LeaseSeconds         *float64 `protobuf:"fixed64,2,req,name=lease_seconds,json=leaseSeconds" json:"lease_seconds,omitempty"`
-	MaxTasks             *int64   `protobuf:"varint,3,req,name=max_tasks,json=maxTasks" json:"max_tasks,omitempty"`
-	GroupByTag           *bool    `protobuf:"varint,4,opt,name=group_by_tag,json=groupByTag,def=0" json:"group_by_tag,omitempty"`
-	Tag                  []byte   `protobuf:"bytes,5,opt,name=tag" json:"tag,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *TaskQueueQueryAndOwnTasksRequest) Reset()         { *m = TaskQueueQueryAndOwnTasksRequest{} }
-func (m *TaskQueueQueryAndOwnTasksRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueQueryAndOwnTasksRequest) ProtoMessage()    {}
-func (*TaskQueueQueryAndOwnTasksRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{35}
+// Deprecated: Use TaskQueueFetchQueueStatsResponse_QueueStatsType.ProtoReflect.Descriptor instead.
+func (*TaskQueueFetchQueueStatsResponse_QueueStatsType) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{20, 0}
 }
-func (m *TaskQueueQueryAndOwnTasksRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueQueryAndOwnTasksRequest.Unmarshal(m, b)
+
+func (x *TaskQueueFetchQueueStatsResponse_QueueStatsType) GetNumTasks() int32 {
+	if x != nil {
+		return x.NumTasks
+	}
+	return 0
 }
-func (m *TaskQueueQueryAndOwnTasksRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueQueryAndOwnTasksRequest.Marshal(b, m, deterministic)
+
+func (x *TaskQueueFetchQueueStatsResponse_QueueStatsType) GetOldestEtaUsec() int64 {
+	if x != nil {
+		return x.OldestEtaUsec
+	}
+	return 0
 }
-func (dst *TaskQueueQueryAndOwnTasksRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueQueryAndOwnTasksRequest.Merge(dst, src)
+
+func (x *TaskQueueFetchQueueStatsResponse_QueueStatsType) GetScannerInfo() *TaskQueueScannerQueueInfo {
+	if x != nil {
+		return x.ScannerInfo
+	}
+	return nil
 }
-func (m *TaskQueueQueryAndOwnTasksRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueQueryAndOwnTasksRequest.Size(m)
+
+type TaskQueueQueryTasksResponse_TaskType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	TaskName         []byte                                                  `protobuf:"bytes,2,opt,name=task_name,json=taskName,proto3" json:"task_name,omitempty"`
+	EtaUsec          int64                                                   `protobuf:"varint,3,opt,name=eta_usec,json=etaUsec,proto3" json:"eta_usec,omitempty"`
+	Url              []byte                                                  `protobuf:"bytes,4,opt,name=url,proto3,oneof" json:"url,omitempty"`
+	Method           *TaskQueueQueryTasksResponse_TaskType_RequestMethod     `protobuf:"varint,5,opt,name=method,proto3,enum=appengine.TaskQueueQueryTasksResponse_TaskType_RequestMethod,oneof" json:"method,omitempty"`
+	RetryCount       *int32                                                  `protobuf:"varint,6,opt,name=retry_count,json=retryCount,proto3,oneof" json:"retry_count,omitempty"`
+	Header           []*TaskQueueQueryTasksResponse_TaskType_HeaderType      `protobuf:"bytes,7,rep,name=Header,proto3" json:"Header,omitempty"`
+	BodySize         *int32                                                  `protobuf:"varint,10,opt,name=body_size,json=bodySize,proto3,oneof" json:"body_size,omitempty"`
+	Body             []byte                                                  `protobuf:"bytes,11,opt,name=body,proto3,oneof" json:"body,omitempty"`
+	CreationTimeUsec int64                                                   `protobuf:"varint,12,opt,name=creation_time_usec,json=creationTimeUsec,proto3" json:"creation_time_usec,omitempty"`
+	CronTimetable    *TaskQueueQueryTasksResponse_TaskType_CronTimetableType `protobuf:"bytes,13,opt,name=CronTimetable,proto3,oneof" json:"CronTimetable,omitempty"`
+	RunLog           *TaskQueueQueryTasksResponse_TaskType_RunLogType        `protobuf:"bytes,16,opt,name=RunLog,proto3,oneof" json:"RunLog,omitempty"`
+	Description      []byte                                                  `protobuf:"bytes,21,opt,name=description,proto3,oneof" json:"description,omitempty"`
+	Payload          *TaskPayload                                            `protobuf:"bytes,22,opt,name=payload,proto3,oneof" json:"payload,omitempty"`
+	RetryParameters  *TaskQueueRetryParameters                               `protobuf:"bytes,23,opt,name=retry_parameters,json=retryParameters,proto3,oneof" json:"retry_parameters,omitempty"`
+	FirstTryUsec     *int64                                                  `protobuf:"varint,24,opt,name=first_try_usec,json=firstTryUsec,proto3,oneof" json:"first_try_usec,omitempty"`
+	Tag              []byte                                                  `protobuf:"bytes,25,opt,name=tag,proto3,oneof" json:"tag,omitempty"`
+	ExecutionCount   *int32                                                  `protobuf:"varint,26,opt,name=execution_count,json=executionCount,proto3,oneof" json:"execution_count,omitempty"`
 }
-func (m *TaskQueueQueryAndOwnTasksRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueQueryAndOwnTasksRequest.DiscardUnknown(m)
+
+func (x *TaskQueueQueryTasksResponse_TaskType) Reset() {
+	*x = TaskQueueQueryTasksResponse_TaskType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[44]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-var xxx_messageInfo_TaskQueueQueryAndOwnTasksRequest proto.InternalMessageInfo
+func (x *TaskQueueQueryTasksResponse_TaskType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
 
-const Default_TaskQueueQueryAndOwnTasksRequest_GroupByTag bool = false
+func (*TaskQueueQueryTasksResponse_TaskType) ProtoMessage() {}
 
-func (m *TaskQueueQueryAndOwnTasksRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueueQueryTasksResponse_TaskType) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 nil
+	return mi.MessageOf(x)
 }
 
-func (m *TaskQueueQueryAndOwnTasksRequest) GetLeaseSeconds() float64 {
-	if m != nil && m.LeaseSeconds != nil {
-		return *m.LeaseSeconds
+// Deprecated: Use TaskQueueQueryTasksResponse_TaskType.ProtoReflect.Descriptor instead.
+func (*TaskQueueQueryTasksResponse_TaskType) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{30, 0}
+}
+
+func (x *TaskQueueQueryTasksResponse_TaskType) GetTaskName() []byte {
+	if x != nil {
+		return x.TaskName
 	}
-	return 0
+	return nil
 }
 
-func (m *TaskQueueQueryAndOwnTasksRequest) GetMaxTasks() int64 {
-	if m != nil && m.MaxTasks != nil {
-		return *m.MaxTasks
+func (x *TaskQueueQueryTasksResponse_TaskType) GetEtaUsec() int64 {
+	if x != nil {
+		return x.EtaUsec
 	}
 	return 0
 }
 
-func (m *TaskQueueQueryAndOwnTasksRequest) GetGroupByTag() bool {
-	if m != nil && m.GroupByTag != nil {
-		return *m.GroupByTag
+func (x *TaskQueueQueryTasksResponse_TaskType) GetUrl() []byte {
+	if x != nil {
+		return x.Url
 	}
-	return Default_TaskQueueQueryAndOwnTasksRequest_GroupByTag
+	return nil
 }
 
-func (m *TaskQueueQueryAndOwnTasksRequest) GetTag() []byte {
-	if m != nil {
-		return m.Tag
+func (x *TaskQueueQueryTasksResponse_TaskType) GetMethod() TaskQueueQueryTasksResponse_TaskType_RequestMethod {
+	if x != nil && x.Method != nil {
+		return *x.Method
 	}
-	return nil
+	return TaskQueueQueryTasksResponse_TaskType_NONE
 }
 
-type TaskQueueQueryAndOwnTasksResponse struct {
-	Task                 []*TaskQueueQueryAndOwnTasksResponse_Task `protobuf:"group,1,rep,name=Task,json=task" json:"task,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
-	XXX_unrecognized     []byte                                    `json:"-"`
-	XXX_sizecache        int32                                     `json:"-"`
+func (x *TaskQueueQueryTasksResponse_TaskType) GetRetryCount() int32 {
+	if x != nil && x.RetryCount != nil {
+		return *x.RetryCount
+	}
+	return 0
 }
 
-func (m *TaskQueueQueryAndOwnTasksResponse) Reset()         { *m = TaskQueueQueryAndOwnTasksResponse{} }
-func (m *TaskQueueQueryAndOwnTasksResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueQueryAndOwnTasksResponse) ProtoMessage()    {}
-func (*TaskQueueQueryAndOwnTasksResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{36}
+func (x *TaskQueueQueryTasksResponse_TaskType) GetHeader() []*TaskQueueQueryTasksResponse_TaskType_HeaderType {
+	if x != nil {
+		return x.Header
+	}
+	return nil
 }
-func (m *TaskQueueQueryAndOwnTasksResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse.Unmarshal(m, b)
+
+func (x *TaskQueueQueryTasksResponse_TaskType) GetBodySize() int32 {
+	if x != nil && x.BodySize != nil {
+		return *x.BodySize
+	}
+	return 0
 }
-func (m *TaskQueueQueryAndOwnTasksResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse.Marshal(b, m, deterministic)
+
+func (x *TaskQueueQueryTasksResponse_TaskType) GetBody() []byte {
+	if x != nil {
+		return x.Body
+	}
+	return nil
 }
-func (dst *TaskQueueQueryAndOwnTasksResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse.Merge(dst, src)
+
+func (x *TaskQueueQueryTasksResponse_TaskType) GetCreationTimeUsec() int64 {
+	if x != nil {
+		return x.CreationTimeUsec
+	}
+	return 0
 }
-func (m *TaskQueueQueryAndOwnTasksResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse.Size(m)
+
+func (x *TaskQueueQueryTasksResponse_TaskType) GetCronTimetable() *TaskQueueQueryTasksResponse_TaskType_CronTimetableType {
+	if x != nil {
+		return x.CronTimetable
+	}
+	return nil
 }
-func (m *TaskQueueQueryAndOwnTasksResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse.DiscardUnknown(m)
+
+func (x *TaskQueueQueryTasksResponse_TaskType) GetRunLog() *TaskQueueQueryTasksResponse_TaskType_RunLogType {
+	if x != nil {
+		return x.RunLog
+	}
+	return nil
 }
 
-var xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse proto.InternalMessageInfo
+func (x *TaskQueueQueryTasksResponse_TaskType) GetDescription() []byte {
+	if x != nil {
+		return x.Description
+	}
+	return nil
+}
 
-func (m *TaskQueueQueryAndOwnTasksResponse) GetTask() []*TaskQueueQueryAndOwnTasksResponse_Task {
-	if m != nil {
-		return m.Task
+func (x *TaskQueueQueryTasksResponse_TaskType) GetPayload() *TaskPayload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-type TaskQueueQueryAndOwnTasksResponse_Task struct {
-	TaskName             []byte   `protobuf:"bytes,2,req,name=task_name,json=taskName" json:"task_name,omitempty"`
-	EtaUsec              *int64   `protobuf:"varint,3,req,name=eta_usec,json=etaUsec" json:"eta_usec,omitempty"`
-	RetryCount           *int32   `protobuf:"varint,4,opt,name=retry_count,json=retryCount,def=0" json:"retry_count,omitempty"`
-	Body                 []byte   `protobuf:"bytes,5,opt,name=body" json:"body,omitempty"`
-	Tag                  []byte   `protobuf:"bytes,6,opt,name=tag" json:"tag,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TaskQueueQueryTasksResponse_TaskType) GetRetryParameters() *TaskQueueRetryParameters {
+	if x != nil {
+		return x.RetryParameters
+	}
+	return nil
 }
 
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) Reset() {
-	*m = TaskQueueQueryAndOwnTasksResponse_Task{}
+func (x *TaskQueueQueryTasksResponse_TaskType) GetFirstTryUsec() int64 {
+	if x != nil && x.FirstTryUsec != nil {
+		return *x.FirstTryUsec
+	}
+	return 0
 }
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueQueryAndOwnTasksResponse_Task) ProtoMessage()    {}
-func (*TaskQueueQueryAndOwnTasksResponse_Task) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{36, 0}
+
+func (x *TaskQueueQueryTasksResponse_TaskType) GetTag() []byte {
+	if x != nil {
+		return x.Tag
+	}
+	return nil
 }
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse_Task.Unmarshal(m, b)
+
+func (x *TaskQueueQueryTasksResponse_TaskType) GetExecutionCount() int32 {
+	if x != nil && x.ExecutionCount != nil {
+		return *x.ExecutionCount
+	}
+	return 0
 }
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse_Task.Marshal(b, m, deterministic)
+
+type TaskQueueQueryTasksResponse_TaskType_HeaderType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Key   []byte `protobuf:"bytes,8,opt,name=key,proto3" json:"key,omitempty"`
+	Value []byte `protobuf:"bytes,9,opt,name=value,proto3" json:"value,omitempty"`
 }
-func (dst *TaskQueueQueryAndOwnTasksResponse_Task) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse_Task.Merge(dst, src)
+
+func (x *TaskQueueQueryTasksResponse_TaskType_HeaderType) Reset() {
+	*x = TaskQueueQueryTasksResponse_TaskType_HeaderType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[45]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse_Task.Size(m)
+
+func (x *TaskQueueQueryTasksResponse_TaskType_HeaderType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse_Task.DiscardUnknown(m)
+
+func (*TaskQueueQueryTasksResponse_TaskType_HeaderType) ProtoMessage() {}
+
+func (x *TaskQueueQueryTasksResponse_TaskType_HeaderType) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueQueryAndOwnTasksResponse_Task proto.InternalMessageInfo
+// Deprecated: Use TaskQueueQueryTasksResponse_TaskType_HeaderType.ProtoReflect.Descriptor instead.
+func (*TaskQueueQueryTasksResponse_TaskType_HeaderType) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{30, 0, 0}
+}
 
-const Default_TaskQueueQueryAndOwnTasksResponse_Task_RetryCount int32 = 0
+func (x *TaskQueueQueryTasksResponse_TaskType_HeaderType) GetKey() []byte {
+	if x != nil {
+		return x.Key
+	}
+	return nil
+}
 
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) GetTaskName() []byte {
-	if m != nil {
-		return m.TaskName
+func (x *TaskQueueQueryTasksResponse_TaskType_HeaderType) GetValue() []byte {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) GetEtaUsec() int64 {
-	if m != nil && m.EtaUsec != nil {
-		return *m.EtaUsec
+type TaskQueueQueryTasksResponse_TaskType_CronTimetableType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Schedule []byte `protobuf:"bytes,14,opt,name=schedule,proto3" json:"schedule,omitempty"`
+	Timezone []byte `protobuf:"bytes,15,opt,name=timezone,proto3" json:"timezone,omitempty"`
+}
+
+func (x *TaskQueueQueryTasksResponse_TaskType_CronTimetableType) Reset() {
+	*x = TaskQueueQueryTasksResponse_TaskType_CronTimetableType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[46]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) GetRetryCount() int32 {
-	if m != nil && m.RetryCount != nil {
-		return *m.RetryCount
+func (x *TaskQueueQueryTasksResponse_TaskType_CronTimetableType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TaskQueueQueryTasksResponse_TaskType_CronTimetableType) ProtoMessage() {}
+
+func (x *TaskQueueQueryTasksResponse_TaskType_CronTimetableType) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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 Default_TaskQueueQueryAndOwnTasksResponse_Task_RetryCount
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TaskQueueQueryTasksResponse_TaskType_CronTimetableType.ProtoReflect.Descriptor instead.
+func (*TaskQueueQueryTasksResponse_TaskType_CronTimetableType) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{30, 0, 1}
 }
 
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) GetBody() []byte {
-	if m != nil {
-		return m.Body
+func (x *TaskQueueQueryTasksResponse_TaskType_CronTimetableType) GetSchedule() []byte {
+	if x != nil {
+		return x.Schedule
 	}
 	return nil
 }
 
-func (m *TaskQueueQueryAndOwnTasksResponse_Task) GetTag() []byte {
-	if m != nil {
-		return m.Tag
+func (x *TaskQueueQueryTasksResponse_TaskType_CronTimetableType) GetTimezone() []byte {
+	if x != nil {
+		return x.Timezone
 	}
 	return nil
 }
 
-type TaskQueueModifyTaskLeaseRequest struct {
-	QueueName            []byte   `protobuf:"bytes,1,req,name=queue_name,json=queueName" json:"queue_name,omitempty"`
-	TaskName             []byte   `protobuf:"bytes,2,req,name=task_name,json=taskName" json:"task_name,omitempty"`
-	EtaUsec              *int64   `protobuf:"varint,3,req,name=eta_usec,json=etaUsec" json:"eta_usec,omitempty"`
-	LeaseSeconds         *float64 `protobuf:"fixed64,4,req,name=lease_seconds,json=leaseSeconds" json:"lease_seconds,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *TaskQueueModifyTaskLeaseRequest) Reset()         { *m = TaskQueueModifyTaskLeaseRequest{} }
-func (m *TaskQueueModifyTaskLeaseRequest) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueModifyTaskLeaseRequest) ProtoMessage()    {}
-func (*TaskQueueModifyTaskLeaseRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{37}
-}
-func (m *TaskQueueModifyTaskLeaseRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueModifyTaskLeaseRequest.Unmarshal(m, b)
-}
-func (m *TaskQueueModifyTaskLeaseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueModifyTaskLeaseRequest.Marshal(b, m, deterministic)
+type TaskQueueQueryTasksResponse_TaskType_RunLogType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	DispatchedUsec int64   `protobuf:"varint,17,opt,name=dispatched_usec,json=dispatchedUsec,proto3" json:"dispatched_usec,omitempty"`
+	LagUsec        int64   `protobuf:"varint,18,opt,name=lag_usec,json=lagUsec,proto3" json:"lag_usec,omitempty"`
+	ElapsedUsec    int64   `protobuf:"varint,19,opt,name=elapsed_usec,json=elapsedUsec,proto3" json:"elapsed_usec,omitempty"`
+	ResponseCode   *int64  `protobuf:"varint,20,opt,name=response_code,json=responseCode,proto3,oneof" json:"response_code,omitempty"`
+	RetryReason    *string `protobuf:"bytes,27,opt,name=retry_reason,json=retryReason,proto3,oneof" json:"retry_reason,omitempty"`
 }
-func (dst *TaskQueueModifyTaskLeaseRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueModifyTaskLeaseRequest.Merge(dst, src)
+
+func (x *TaskQueueQueryTasksResponse_TaskType_RunLogType) Reset() {
+	*x = TaskQueueQueryTasksResponse_TaskType_RunLogType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[47]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueModifyTaskLeaseRequest) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueModifyTaskLeaseRequest.Size(m)
+
+func (x *TaskQueueQueryTasksResponse_TaskType_RunLogType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *TaskQueueModifyTaskLeaseRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueModifyTaskLeaseRequest.DiscardUnknown(m)
+
+func (*TaskQueueQueryTasksResponse_TaskType_RunLogType) ProtoMessage() {}
+
+func (x *TaskQueueQueryTasksResponse_TaskType_RunLogType) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
 
-var xxx_messageInfo_TaskQueueModifyTaskLeaseRequest proto.InternalMessageInfo
+// Deprecated: Use TaskQueueQueryTasksResponse_TaskType_RunLogType.ProtoReflect.Descriptor instead.
+func (*TaskQueueQueryTasksResponse_TaskType_RunLogType) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{30, 0, 2}
+}
 
-func (m *TaskQueueModifyTaskLeaseRequest) GetQueueName() []byte {
-	if m != nil {
-		return m.QueueName
+func (x *TaskQueueQueryTasksResponse_TaskType_RunLogType) GetDispatchedUsec() int64 {
+	if x != nil {
+		return x.DispatchedUsec
 	}
-	return nil
+	return 0
 }
 
-func (m *TaskQueueModifyTaskLeaseRequest) GetTaskName() []byte {
-	if m != nil {
-		return m.TaskName
+func (x *TaskQueueQueryTasksResponse_TaskType_RunLogType) GetLagUsec() int64 {
+	if x != nil {
+		return x.LagUsec
 	}
-	return nil
+	return 0
 }
 
-func (m *TaskQueueModifyTaskLeaseRequest) GetEtaUsec() int64 {
-	if m != nil && m.EtaUsec != nil {
-		return *m.EtaUsec
+func (x *TaskQueueQueryTasksResponse_TaskType_RunLogType) GetElapsedUsec() int64 {
+	if x != nil {
+		return x.ElapsedUsec
 	}
 	return 0
 }
 
-func (m *TaskQueueModifyTaskLeaseRequest) GetLeaseSeconds() float64 {
-	if m != nil && m.LeaseSeconds != nil {
-		return *m.LeaseSeconds
+func (x *TaskQueueQueryTasksResponse_TaskType_RunLogType) GetResponseCode() int64 {
+	if x != nil && x.ResponseCode != nil {
+		return *x.ResponseCode
 	}
 	return 0
 }
 
-type TaskQueueModifyTaskLeaseResponse struct {
-	UpdatedEtaUsec       *int64   `protobuf:"varint,1,req,name=updated_eta_usec,json=updatedEtaUsec" json:"updated_eta_usec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *TaskQueueQueryTasksResponse_TaskType_RunLogType) GetRetryReason() string {
+	if x != nil && x.RetryReason != nil {
+		return *x.RetryReason
+	}
+	return ""
 }
 
-func (m *TaskQueueModifyTaskLeaseResponse) Reset()         { *m = TaskQueueModifyTaskLeaseResponse{} }
-func (m *TaskQueueModifyTaskLeaseResponse) String() string { return proto.CompactTextString(m) }
-func (*TaskQueueModifyTaskLeaseResponse) ProtoMessage()    {}
-func (*TaskQueueModifyTaskLeaseResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_taskqueue_service_05300f6f4e69f490, []int{38}
+type TaskQueueQueryAndOwnTasksResponse_TaskType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	TaskName   []byte `protobuf:"bytes,2,opt,name=task_name,json=taskName,proto3" json:"task_name,omitempty"`
+	EtaUsec    int64  `protobuf:"varint,3,opt,name=eta_usec,json=etaUsec,proto3" json:"eta_usec,omitempty"`
+	RetryCount *int32 `protobuf:"varint,4,opt,name=retry_count,json=retryCount,proto3,oneof" json:"retry_count,omitempty"`
+	Body       []byte `protobuf:"bytes,5,opt,name=body,proto3,oneof" json:"body,omitempty"`
+	Tag        []byte `protobuf:"bytes,6,opt,name=tag,proto3,oneof" json:"tag,omitempty"`
 }
-func (m *TaskQueueModifyTaskLeaseResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TaskQueueModifyTaskLeaseResponse.Unmarshal(m, b)
+
+func (x *TaskQueueQueryAndOwnTasksResponse_TaskType) Reset() {
+	*x = TaskQueueQueryAndOwnTasksResponse_TaskType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_taskqueue_service_proto_msgTypes[48]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *TaskQueueModifyTaskLeaseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TaskQueueModifyTaskLeaseResponse.Marshal(b, m, deterministic)
+
+func (x *TaskQueueQueryAndOwnTasksResponse_TaskType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (dst *TaskQueueModifyTaskLeaseResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TaskQueueModifyTaskLeaseResponse.Merge(dst, src)
+
+func (*TaskQueueQueryAndOwnTasksResponse_TaskType) ProtoMessage() {}
+
+func (x *TaskQueueQueryAndOwnTasksResponse_TaskType) ProtoReflect() protoreflect.Message {
+	mi := &file_taskqueue_service_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)
 }
-func (m *TaskQueueModifyTaskLeaseResponse) XXX_Size() int {
-	return xxx_messageInfo_TaskQueueModifyTaskLeaseResponse.Size(m)
+
+// Deprecated: Use TaskQueueQueryAndOwnTasksResponse_TaskType.ProtoReflect.Descriptor instead.
+func (*TaskQueueQueryAndOwnTasksResponse_TaskType) Descriptor() ([]byte, []int) {
+	return file_taskqueue_service_proto_rawDescGZIP(), []int{36, 0}
 }
-func (m *TaskQueueModifyTaskLeaseResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TaskQueueModifyTaskLeaseResponse.DiscardUnknown(m)
+
+func (x *TaskQueueQueryAndOwnTasksResponse_TaskType) GetTaskName() []byte {
+	if x != nil {
+		return x.TaskName
+	}
+	return nil
 }
 
-var xxx_messageInfo_TaskQueueModifyTaskLeaseResponse proto.InternalMessageInfo
+func (x *TaskQueueQueryAndOwnTasksResponse_TaskType) GetEtaUsec() int64 {
+	if x != nil {
+		return x.EtaUsec
+	}
+	return 0
+}
 
-func (m *TaskQueueModifyTaskLeaseResponse) GetUpdatedEtaUsec() int64 {
-	if m != nil && m.UpdatedEtaUsec != nil {
-		return *m.UpdatedEtaUsec
+func (x *TaskQueueQueryAndOwnTasksResponse_TaskType) GetRetryCount() int32 {
+	if x != nil && x.RetryCount != nil {
+		return *x.RetryCount
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*TaskQueueServiceError)(nil), "appengine.TaskQueueServiceError")
-	proto.RegisterType((*TaskPayload)(nil), "appengine.TaskPayload")
-	proto.RegisterType((*TaskQueueRetryParameters)(nil), "appengine.TaskQueueRetryParameters")
-	proto.RegisterType((*TaskQueueAcl)(nil), "appengine.TaskQueueAcl")
-	proto.RegisterType((*TaskQueueHttpHeader)(nil), "appengine.TaskQueueHttpHeader")
-	proto.RegisterType((*TaskQueueMode)(nil), "appengine.TaskQueueMode")
-	proto.RegisterType((*TaskQueueAddRequest)(nil), "appengine.TaskQueueAddRequest")
-	proto.RegisterType((*TaskQueueAddRequest_Header)(nil), "appengine.TaskQueueAddRequest.Header")
-	proto.RegisterType((*TaskQueueAddRequest_CronTimetable)(nil), "appengine.TaskQueueAddRequest.CronTimetable")
-	proto.RegisterType((*TaskQueueAddResponse)(nil), "appengine.TaskQueueAddResponse")
-	proto.RegisterType((*TaskQueueBulkAddRequest)(nil), "appengine.TaskQueueBulkAddRequest")
-	proto.RegisterType((*TaskQueueBulkAddResponse)(nil), "appengine.TaskQueueBulkAddResponse")
-	proto.RegisterType((*TaskQueueBulkAddResponse_TaskResult)(nil), "appengine.TaskQueueBulkAddResponse.TaskResult")
-	proto.RegisterType((*TaskQueueDeleteRequest)(nil), "appengine.TaskQueueDeleteRequest")
-	proto.RegisterType((*TaskQueueDeleteResponse)(nil), "appengine.TaskQueueDeleteResponse")
-	proto.RegisterType((*TaskQueueForceRunRequest)(nil), "appengine.TaskQueueForceRunRequest")
-	proto.RegisterType((*TaskQueueForceRunResponse)(nil), "appengine.TaskQueueForceRunResponse")
-	proto.RegisterType((*TaskQueueUpdateQueueRequest)(nil), "appengine.TaskQueueUpdateQueueRequest")
-	proto.RegisterType((*TaskQueueUpdateQueueResponse)(nil), "appengine.TaskQueueUpdateQueueResponse")
-	proto.RegisterType((*TaskQueueFetchQueuesRequest)(nil), "appengine.TaskQueueFetchQueuesRequest")
-	proto.RegisterType((*TaskQueueFetchQueuesResponse)(nil), "appengine.TaskQueueFetchQueuesResponse")
-	proto.RegisterType((*TaskQueueFetchQueuesResponse_Queue)(nil), "appengine.TaskQueueFetchQueuesResponse.Queue")
-	proto.RegisterType((*TaskQueueFetchQueueStatsRequest)(nil), "appengine.TaskQueueFetchQueueStatsRequest")
-	proto.RegisterType((*TaskQueueScannerQueueInfo)(nil), "appengine.TaskQueueScannerQueueInfo")
-	proto.RegisterType((*TaskQueueFetchQueueStatsResponse)(nil), "appengine.TaskQueueFetchQueueStatsResponse")
-	proto.RegisterType((*TaskQueueFetchQueueStatsResponse_QueueStats)(nil), "appengine.TaskQueueFetchQueueStatsResponse.QueueStats")
-	proto.RegisterType((*TaskQueuePauseQueueRequest)(nil), "appengine.TaskQueuePauseQueueRequest")
-	proto.RegisterType((*TaskQueuePauseQueueResponse)(nil), "appengine.TaskQueuePauseQueueResponse")
-	proto.RegisterType((*TaskQueuePurgeQueueRequest)(nil), "appengine.TaskQueuePurgeQueueRequest")
-	proto.RegisterType((*TaskQueuePurgeQueueResponse)(nil), "appengine.TaskQueuePurgeQueueResponse")
-	proto.RegisterType((*TaskQueueDeleteQueueRequest)(nil), "appengine.TaskQueueDeleteQueueRequest")
-	proto.RegisterType((*TaskQueueDeleteQueueResponse)(nil), "appengine.TaskQueueDeleteQueueResponse")
-	proto.RegisterType((*TaskQueueDeleteGroupRequest)(nil), "appengine.TaskQueueDeleteGroupRequest")
-	proto.RegisterType((*TaskQueueDeleteGroupResponse)(nil), "appengine.TaskQueueDeleteGroupResponse")
-	proto.RegisterType((*TaskQueueQueryTasksRequest)(nil), "appengine.TaskQueueQueryTasksRequest")
-	proto.RegisterType((*TaskQueueQueryTasksResponse)(nil), "appengine.TaskQueueQueryTasksResponse")
-	proto.RegisterType((*TaskQueueQueryTasksResponse_Task)(nil), "appengine.TaskQueueQueryTasksResponse.Task")
-	proto.RegisterType((*TaskQueueQueryTasksResponse_Task_Header)(nil), "appengine.TaskQueueQueryTasksResponse.Task.Header")
-	proto.RegisterType((*TaskQueueQueryTasksResponse_Task_CronTimetable)(nil), "appengine.TaskQueueQueryTasksResponse.Task.CronTimetable")
-	proto.RegisterType((*TaskQueueQueryTasksResponse_Task_RunLog)(nil), "appengine.TaskQueueQueryTasksResponse.Task.RunLog")
-	proto.RegisterType((*TaskQueueFetchTaskRequest)(nil), "appengine.TaskQueueFetchTaskRequest")
-	proto.RegisterType((*TaskQueueFetchTaskResponse)(nil), "appengine.TaskQueueFetchTaskResponse")
-	proto.RegisterType((*TaskQueueUpdateStorageLimitRequest)(nil), "appengine.TaskQueueUpdateStorageLimitRequest")
-	proto.RegisterType((*TaskQueueUpdateStorageLimitResponse)(nil), "appengine.TaskQueueUpdateStorageLimitResponse")
-	proto.RegisterType((*TaskQueueQueryAndOwnTasksRequest)(nil), "appengine.TaskQueueQueryAndOwnTasksRequest")
-	proto.RegisterType((*TaskQueueQueryAndOwnTasksResponse)(nil), "appengine.TaskQueueQueryAndOwnTasksResponse")
-	proto.RegisterType((*TaskQueueQueryAndOwnTasksResponse_Task)(nil), "appengine.TaskQueueQueryAndOwnTasksResponse.Task")
-	proto.RegisterType((*TaskQueueModifyTaskLeaseRequest)(nil), "appengine.TaskQueueModifyTaskLeaseRequest")
-	proto.RegisterType((*TaskQueueModifyTaskLeaseResponse)(nil), "appengine.TaskQueueModifyTaskLeaseResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/taskqueue/taskqueue_service.proto", fileDescriptor_taskqueue_service_05300f6f4e69f490)
-}
-
-var fileDescriptor_taskqueue_service_05300f6f4e69f490 = []byte{
-	// 2747 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x39, 0x4d, 0x73, 0xdb, 0xd6,
-	0xb5, 0x01, 0xbf, 0x44, 0x1e, 0x7e, 0xc1, 0xd7, 0xb2, 0x44, 0x51, 0x71, 0x22, 0xc3, 0xf9, 0xd0,
-	0x4b, 0xfc, 0x14, 0x59, 0x79, 0xe3, 0xbc, 0xa7, 0x99, 0x4c, 0x1e, 0x24, 0xc2, 0x32, 0x63, 0x8a,
-	0xa4, 0x2f, 0xa1, 0x34, 0xce, 0x4c, 0x07, 0x73, 0x45, 0x5c, 0x51, 0x18, 0x81, 0x00, 0x83, 0x0f,
-	0x5b, 0xf2, 0xa2, 0xab, 0xae, 0x3a, 0x5d, 0x74, 0xd3, 0xe9, 0x4c, 0x66, 0xba, 0xea, 0xf4, 0x37,
-	0x74, 0xd7, 0xfe, 0x90, 0x2e, 0x3b, 0xd3, 0x3f, 0xd0, 0x55, 0xa7, 0x0b, 0x77, 0xee, 0xbd, 0x00,
-	0x08, 0x4a, 0xb4, 0x6c, 0x4b, 0x49, 0x37, 0x12, 0x70, 0xce, 0xb9, 0xe7, 0xdc, 0xf3, 0x7d, 0x70,
-	0x08, 0x0f, 0x47, 0xae, 0x3b, 0xb2, 0xe9, 0xc6, 0xc8, 0xb5, 0x89, 0x33, 0xda, 0x70, 0xbd, 0xd1,
-	0x67, 0x64, 0x32, 0xa1, 0xce, 0xc8, 0x72, 0xe8, 0x67, 0x96, 0x13, 0x50, 0xcf, 0x21, 0xf6, 0x67,
-	0x01, 0xf1, 0x4f, 0xbe, 0x0f, 0x69, 0x48, 0xa7, 0x4f, 0x86, 0x4f, 0xbd, 0x67, 0xd6, 0x90, 0x6e,
-	0x4c, 0x3c, 0x37, 0x70, 0x51, 0x29, 0x39, 0xd5, 0x54, 0xdf, 0x88, 0xa5, 0x49, 0x02, 0xe2, 0x07,
-	0xae, 0x47, 0xa7, 0x4f, 0xc6, 0xb3, 0xcf, 0x05, 0x37, 0xe5, 0xb7, 0x79, 0xb8, 0xa5, 0x13, 0xff,
-	0xe4, 0x09, 0x93, 0x34, 0x10, 0x82, 0x34, 0xcf, 0x73, 0x3d, 0xe5, 0x5f, 0x39, 0x28, 0xf1, 0xa7,
-	0x5d, 0xd7, 0xa4, 0xa8, 0x00, 0x99, 0xde, 0x63, 0xf9, 0x1d, 0x74, 0x03, 0xaa, 0x07, 0xdd, 0xc7,
-	0xdd, 0xde, 0xcf, 0xba, 0xc6, 0x93, 0x03, 0xed, 0x40, 0x93, 0x25, 0x74, 0x13, 0xea, 0x3a, 0x56,
-	0xbb, 0x83, 0xb6, 0xd6, 0xd5, 0x0d, 0x0d, 0xe3, 0x1e, 0x96, 0x33, 0x08, 0x41, 0xad, 0xdd, 0xd5,
-	0x35, 0xdc, 0x55, 0x3b, 0x11, 0x2c, 0xcb, 0x60, 0xba, 0x3a, 0x78, 0x6c, 0xe8, 0xbd, 0x9e, 0xd1,
-	0x51, 0xf1, 0x9e, 0x26, 0xe7, 0xd0, 0x2d, 0xb8, 0xd1, 0xee, 0x7e, 0xa3, 0x76, 0xda, 0x2d, 0x83,
-	0xe3, 0xba, 0xea, 0xbe, 0x26, 0xe7, 0xd1, 0x12, 0xa0, 0x18, 0xcc, 0xc5, 0x08, 0x78, 0x01, 0xd5,
-	0xa1, 0x1c, 0xc3, 0x0f, 0x70, 0x47, 0x5e, 0xb8, 0x48, 0x88, 0x55, 0x5d, 0x93, 0x8b, 0x8c, 0x6f,
-	0x5f, 0xc3, 0xfb, 0xed, 0xc1, 0xa0, 0xdd, 0xeb, 0x1a, 0x2d, 0xad, 0xdb, 0xd6, 0x5a, 0x72, 0x09,
-	0x2d, 0xc3, 0x4d, 0x2e, 0x46, 0xed, 0x60, 0x4d, 0x6d, 0x3d, 0x35, 0xb4, 0x6f, 0xdb, 0x03, 0x7d,
-	0x20, 0x03, 0x57, 0xa2, 0xb7, 0xbf, 0x33, 0xd0, 0x7b, 0x5d, 0x4d, 0x5c, 0x45, 0x2e, 0xa7, 0xa5,
-	0x69, 0xba, 0x2a, 0x57, 0x18, 0x55, 0x0c, 0xc0, 0xda, 0x93, 0x03, 0x6d, 0xa0, 0xcb, 0x55, 0x24,
-	0x43, 0x25, 0x36, 0x09, 0x3f, 0x57, 0x43, 0x8b, 0x20, 0xa7, 0x98, 0x09, 0x3b, 0xd5, 0x99, 0xec,
-	0xd6, 0x41, 0xbf, 0xd3, 0xde, 0x55, 0x75, 0x2d, 0xa5, 0xac, 0x8c, 0xca, 0xb0, 0x30, 0x78, 0xdc,
-	0xee, 0xf7, 0xb5, 0x96, 0x7c, 0x83, 0x1b, 0xa9, 0xd7, 0x33, 0xf6, 0xd5, 0xee, 0x53, 0x4e, 0x34,
-	0x90, 0x51, 0x5a, 0x6c, 0x5f, 0x7d, 0xda, 0xe9, 0xa9, 0x2d, 0xf9, 0x26, 0x7a, 0x17, 0x1a, 0xd3,
-	0xbb, 0xe8, 0xf8, 0xa9, 0xd1, 0x57, 0xb1, 0xba, 0xaf, 0xe9, 0x1a, 0x1e, 0xc8, 0x8b, 0x17, 0xed,
-	0xb2, 0xdf, 0x6b, 0x69, 0xf2, 0x2d, 0x76, 0x35, 0x75, 0xb7, 0x63, 0x74, 0x7a, 0xbd, 0xc7, 0x07,
-	0xfd, 0xc8, 0x33, 0x4b, 0xe8, 0x2e, 0xbc, 0xcf, 0x5d, 0xa8, 0xee, 0xea, 0xed, 0x1e, 0x73, 0x59,
-	0xa4, 0x5d, 0xca, 0x55, 0xcb, 0xa8, 0x09, 0x4b, 0xed, 0xee, 0x6e, 0x0f, 0x63, 0x6d, 0x57, 0x37,
-	0x76, 0xb1, 0xa6, 0xea, 0x3d, 0x2c, 0x54, 0x68, 0x30, 0x71, 0x5c, 0xa3, 0x8e, 0xa6, 0x0e, 0x34,
-	0x43, 0xfb, 0xb6, 0xdf, 0xc6, 0x5a, 0x4b, 0x5e, 0x61, 0xb6, 0x11, 0xe2, 0xfb, 0xea, 0xc1, 0x40,
-	0x6b, 0xc9, 0xcd, 0xb4, 0x4d, 0x75, 0x75, 0x4f, 0x5e, 0x45, 0x8b, 0x50, 0x6f, 0xa9, 0xba, 0x3a,
-	0xd0, 0x7b, 0x58, 0x8b, 0x2e, 0xf4, 0x9b, 0xae, 0xb2, 0x0a, 0x65, 0x16, 0x96, 0x7d, 0x72, 0x66,
-	0xbb, 0xc4, 0xfc, 0xa4, 0x58, 0x04, 0xf9, 0xe5, 0xcb, 0x97, 0x2f, 0x17, 0xb6, 0x33, 0x45, 0x49,
-	0xf9, 0x9b, 0x04, 0x8d, 0x24, 0x68, 0x31, 0x0d, 0xbc, 0xb3, 0x3e, 0xf1, 0xc8, 0x98, 0x06, 0xd4,
-	0xf3, 0xd1, 0xfb, 0x50, 0xf6, 0x18, 0xc8, 0xb0, 0xad, 0xb1, 0x15, 0x34, 0xa4, 0x35, 0x69, 0x3d,
-	0x8f, 0x81, 0x83, 0x3a, 0x0c, 0x82, 0x14, 0xa8, 0x92, 0x11, 0x15, 0x68, 0xc3, 0xa7, 0xc3, 0x46,
-	0x66, 0x4d, 0x5a, 0xcf, 0xe2, 0x32, 0x19, 0x51, 0x4e, 0x30, 0xa0, 0x43, 0xf4, 0x29, 0xd4, 0xc7,
-	0x96, 0x63, 0x1c, 0x92, 0xe1, 0x89, 0x7b, 0x74, 0xc4, 0xa9, 0xb2, 0x6b, 0xd2, 0xba, 0xb4, 0x9d,
-	0xdd, 0xdc, 0xb8, 0x8f, 0xab, 0x63, 0xcb, 0xd9, 0x11, 0x28, 0x46, 0x7c, 0x0f, 0xea, 0x63, 0x72,
-	0x3a, 0x43, 0x9c, 0xe3, 0xc4, 0xb9, 0xcf, 0x1f, 0x6c, 0x6e, 0xe2, 0xea, 0x98, 0x9c, 0xa6, 0xa8,
-	0x3f, 0x06, 0x06, 0x30, 0x4c, 0x37, 0x3c, 0xb4, 0x2d, 0x67, 0xe4, 0x37, 0xf2, 0xec, 0x86, 0xdb,
-	0x99, 0xfb, 0x0f, 0x70, 0x65, 0x4c, 0x4e, 0x5b, 0x31, 0x5c, 0xe9, 0x43, 0x25, 0x51, 0x52, 0x1d,
-	0xda, 0xe8, 0x36, 0x40, 0xe8, 0x53, 0xcf, 0xa0, 0x63, 0x62, 0xd9, 0x0d, 0x69, 0x2d, 0xbb, 0x5e,
-	0xc1, 0x25, 0x06, 0xd1, 0x18, 0x00, 0xdd, 0x81, 0xca, 0x73, 0xcf, 0x0a, 0x12, 0x82, 0x0c, 0x27,
-	0x28, 0x0b, 0x18, 0x27, 0x51, 0xbe, 0x84, 0x9b, 0x09, 0xc7, 0x47, 0x41, 0x30, 0x79, 0x44, 0x89,
-	0x49, 0x3d, 0x24, 0x43, 0xf6, 0x84, 0x9e, 0x35, 0xa4, 0xb5, 0xcc, 0x7a, 0x05, 0xb3, 0x47, 0xb4,
-	0x08, 0xf9, 0x67, 0xc4, 0x0e, 0x69, 0x23, 0xc3, 0x61, 0xe2, 0x45, 0xf9, 0x14, 0xaa, 0xc9, 0xf1,
-	0x7d, 0xd7, 0xa4, 0x4a, 0x13, 0x72, 0xec, 0x3f, 0x2a, 0x42, 0xae, 0x7f, 0x30, 0x78, 0x24, 0xbf,
-	0x23, 0x9e, 0x3a, 0x1d, 0x59, 0x52, 0xfe, 0x51, 0x48, 0x09, 0x53, 0x4d, 0x13, 0xd3, 0xef, 0x43,
-	0xea, 0x07, 0x4c, 0x0b, 0x51, 0xd5, 0x1c, 0x32, 0xa6, 0x91, 0xcc, 0x12, 0x87, 0x74, 0xc9, 0x98,
-	0xa2, 0x55, 0x28, 0xb1, 0xc2, 0x27, 0xb0, 0x42, 0x7a, 0x91, 0x01, 0x38, 0x72, 0x05, 0x8a, 0x34,
-	0x20, 0x46, 0x28, 0xdc, 0x91, 0x59, 0xcf, 0xe2, 0x05, 0x1a, 0x90, 0x03, 0x9f, 0x0e, 0xd1, 0xd7,
-	0x50, 0x18, 0xd3, 0xe0, 0xd8, 0x35, 0xb9, 0x39, 0x6b, 0x5b, 0xf7, 0x36, 0x92, 0x4a, 0xb8, 0x31,
-	0xe7, 0x1a, 0x1b, 0xd1, 0xff, 0x7d, 0x7e, 0x66, 0x3b, 0xd7, 0xef, 0x0d, 0x74, 0x1c, 0x71, 0x60,
-	0xf6, 0x08, 0x3d, 0x9b, 0xfb, 0xb0, 0x82, 0xd9, 0x23, 0xfa, 0x12, 0x0a, 0xc7, 0xdc, 0x56, 0x8d,
-	0xc2, 0x5a, 0x76, 0x1d, 0xb6, 0x3e, 0x7c, 0x0d, 0x77, 0x61, 0x58, 0x1c, 0x1d, 0x42, 0x4b, 0x90,
-	0x3b, 0x74, 0xcd, 0xb3, 0x46, 0x89, 0x71, 0xdc, 0xc9, 0x14, 0x25, 0xcc, 0xdf, 0xd1, 0xff, 0x42,
-	0x39, 0xf0, 0x88, 0xe3, 0x93, 0x61, 0x60, 0xb9, 0x4e, 0x03, 0xd6, 0xa4, 0xf5, 0xf2, 0xd6, 0x52,
-	0x9a, 0xf7, 0x14, 0x8b, 0xd3, 0xa4, 0xe8, 0x16, 0x14, 0xc8, 0x64, 0x62, 0x58, 0x66, 0xa3, 0xcc,
-	0x6f, 0x99, 0x27, 0x93, 0x49, 0xdb, 0x44, 0x18, 0xaa, 0x43, 0xcf, 0x75, 0x02, 0x6b, 0x4c, 0x03,
-	0x72, 0x68, 0xd3, 0x46, 0x65, 0x4d, 0x5a, 0x87, 0xd7, 0x1a, 0x63, 0xd7, 0x73, 0x1d, 0x3d, 0x3e,
-	0x83, 0x67, 0x59, 0xa0, 0x35, 0x28, 0x9b, 0xd4, 0x1f, 0x7a, 0xd6, 0x84, 0x5f, 0xb2, 0xce, 0xe5,
-	0xa5, 0x41, 0x68, 0x13, 0x16, 0x26, 0x22, 0x4f, 0x1b, 0xf2, 0x45, 0x15, 0xa6, 0x59, 0x8c, 0x63,
-	0x32, 0xd4, 0x05, 0x59, 0xe4, 0xe8, 0x24, 0xc9, 0xdb, 0xc6, 0x0d, 0x7e, 0xf4, 0xee, 0xbc, 0xab,
-	0x9e, 0x4b, 0x71, 0x5c, 0xf7, 0xce, 0xe5, 0xfc, 0x17, 0x90, 0x1b, 0xbb, 0x26, 0x6d, 0x20, 0xee,
-	0xfb, 0xdb, 0xf3, 0x78, 0xb0, 0x40, 0xdd, 0x60, 0x7f, 0xb6, 0x79, 0xac, 0x62, 0x7e, 0x80, 0xb9,
-	0x3a, 0x20, 0xa3, 0xc6, 0x4d, 0xe1, 0xea, 0x80, 0x8c, 0x9a, 0x9b, 0x50, 0x98, 0x4d, 0x8b, 0x85,
-	0x39, 0x69, 0x51, 0x4c, 0xa5, 0x45, 0x73, 0x0f, 0xaa, 0x33, 0x06, 0x44, 0x4d, 0x28, 0xfa, 0xc3,
-	0x63, 0x6a, 0x86, 0x36, 0x6d, 0x54, 0x45, 0x08, 0xc7, 0xef, 0x0c, 0xc7, 0x4c, 0xfb, 0xc2, 0x75,
-	0x68, 0xa3, 0x16, 0x85, 0x77, 0xf4, 0xae, 0xa8, 0x50, 0x9d, 0x09, 0x4b, 0xb4, 0x00, 0xd9, 0x3d,
-	0x4d, 0x97, 0x25, 0x9e, 0x56, 0xbd, 0x81, 0x2e, 0x67, 0xd8, 0xd3, 0x23, 0x4d, 0x6d, 0xc9, 0x59,
-	0x86, 0xec, 0x1f, 0xe8, 0x72, 0x0e, 0x01, 0x14, 0x5a, 0x5a, 0x47, 0xd3, 0x35, 0x39, 0xaf, 0xfc,
-	0x3f, 0x2c, 0xce, 0x3a, 0xd8, 0x9f, 0xb8, 0x8e, 0x4f, 0xd1, 0x3a, 0xc8, 0xc3, 0x63, 0xd7, 0xa7,
-	0x8e, 0x31, 0xcd, 0x2e, 0x89, 0x2b, 0x5d, 0x13, 0x70, 0x3d, 0xca, 0x31, 0xe5, 0x3b, 0x58, 0x4e,
-	0x38, 0xec, 0x84, 0xf6, 0x49, 0x2a, 0x75, 0xbf, 0x82, 0x32, 0x31, 0x4d, 0xc3, 0x13, 0xaf, 0xbc,
-	0x02, 0x95, 0xb7, 0xde, 0xbb, 0x3c, 0xb6, 0x30, 0x90, 0xe4, 0x59, 0xf9, 0x7b, 0xba, 0x6e, 0x27,
-	0xcc, 0xa3, 0x2b, 0x76, 0x01, 0xd8, 0xdd, 0x3c, 0xea, 0x87, 0xb6, 0x60, 0x0e, 0x5b, 0x1b, 0xf3,
-	0x98, 0x9f, 0x3b, 0xc8, 0x11, 0x98, 0x9f, 0xc2, 0x29, 0x0e, 0xcd, 0x17, 0x00, 0x53, 0x0c, 0xda,
-	0x81, 0x42, 0xc4, 0x99, 0x15, 0x95, 0xda, 0xd6, 0x27, 0xf3, 0x38, 0xa7, 0xe7, 0x9f, 0x8d, 0x64,
-	0xf6, 0xc1, 0xd1, 0xc9, 0xb9, 0x46, 0xcc, 0xce, 0x35, 0xe2, 0x09, 0x2c, 0x25, 0x4c, 0x5b, 0xd4,
-	0xa6, 0x01, 0xbd, 0x5a, 0xf9, 0xcb, 0xce, 0x94, 0xbf, 0x69, 0xd2, 0x67, 0x53, 0x49, 0xaf, 0xfc,
-	0x3c, 0xe5, 0xb1, 0x58, 0x58, 0x64, 0xd3, 0xa9, 0xd6, 0xd9, 0xb5, 0xec, 0xd5, 0xb4, 0x56, 0xc6,
-	0x29, 0x9f, 0x3d, 0x74, 0xbd, 0x21, 0xc5, 0xa1, 0x13, 0x6b, 0x33, 0xbd, 0x91, 0x94, 0x2e, 0x43,
-	0xb3, 0x4a, 0x66, 0x2e, 0x55, 0x32, 0x3b, 0x5b, 0xe3, 0x15, 0x03, 0x56, 0xe6, 0x88, 0x9b, 0xa3,
-	0xcf, 0x15, 0xbd, 0xa8, 0xfc, 0x90, 0x83, 0xd5, 0x84, 0xf6, 0x60, 0x62, 0x92, 0x80, 0x46, 0x45,
-	0xe6, 0x3a, 0x3a, 0x7d, 0x01, 0x8d, 0xc3, 0x70, 0x78, 0x42, 0x03, 0xc3, 0xa3, 0x47, 0x96, 0x6d,
-	0x1b, 0x13, 0xea, 0xb1, 0x49, 0xc0, 0x75, 0x4c, 0x7e, 0x57, 0x09, 0xdf, 0x12, 0x78, 0xcc, 0xd1,
-	0x7d, 0xea, 0x0d, 0x38, 0x12, 0x7d, 0x0c, 0xf5, 0xe8, 0xe0, 0x90, 0x4c, 0xc8, 0xd0, 0x0a, 0xce,
-	0x1a, 0xb9, 0xb5, 0xcc, 0x7a, 0x1e, 0xd7, 0x04, 0x78, 0x37, 0x82, 0xa2, 0x0d, 0xb8, 0xc9, 0xdb,
-	0xbf, 0x3f, 0xa1, 0x43, 0xeb, 0xc8, 0xa2, 0xa6, 0xe1, 0x91, 0x80, 0xf2, 0x76, 0x57, 0xc2, 0x37,
-	0x18, 0x6a, 0x10, 0x63, 0x30, 0x09, 0xe8, 0xdc, 0x1a, 0x5b, 0xb8, 0x46, 0x8d, 0x7d, 0x00, 0xcb,
-	0x6c, 0x6e, 0x19, 0xba, 0xce, 0x30, 0xf4, 0x3c, 0xea, 0x04, 0x71, 0x21, 0xf0, 0x1b, 0x0b, 0x7c,
-	0xc6, 0xba, 0x35, 0x26, 0xa7, 0xbb, 0x09, 0x36, 0x32, 0xe7, 0xb4, 0x36, 0x17, 0xdf, 0xb6, 0x36,
-	0xff, 0x17, 0x64, 0xc9, 0xd0, 0xe6, 0x4d, 0xb3, 0xbc, 0xb5, 0x3c, 0xb7, 0xcc, 0x0c, 0x6d, 0xcc,
-	0x68, 0xd0, 0x1e, 0xd4, 0x45, 0xab, 0x35, 0xdc, 0x67, 0xd4, 0xf3, 0x2c, 0x93, 0x36, 0xe0, 0xd5,
-	0xd5, 0x69, 0x3a, 0xfa, 0xe0, 0x9a, 0x38, 0xd6, 0x8b, 0x4e, 0x29, 0xef, 0xc1, 0xbb, 0xf3, 0x63,
-	0x43, 0x04, 0xa0, 0xd2, 0x4b, 0xc5, 0xce, 0x43, 0x1a, 0x0c, 0x8f, 0xf9, 0x93, 0xff, 0x9a, 0xd8,
-	0x59, 0x81, 0x22, 0x33, 0x9d, 0xe7, 0x3e, 0xf7, 0x79, 0xe4, 0xe4, 0xf1, 0xc2, 0x98, 0x9c, 0x62,
-	0xf7, 0xb9, 0xaf, 0xfc, 0x31, 0x9f, 0x92, 0x38, 0xc3, 0x31, 0x0a, 0xf9, 0x5d, 0xc8, 0xf3, 0x28,
-	0x8b, 0x2a, 0xe2, 0x7f, 0xcf, 0x53, 0x68, 0xce, 0xb9, 0x0d, 0x71, 0x6f, 0x71, 0xb6, 0xf9, 0x97,
-	0x1c, 0xe4, 0x39, 0xe0, 0x3f, 0x1d, 0xc6, 0xd2, 0xb5, 0xc3, 0xf8, 0x36, 0x14, 0x26, 0x24, 0xf4,
-	0xa9, 0xd9, 0x28, 0xac, 0x65, 0xd6, 0x8b, 0xdb, 0xf9, 0x23, 0x62, 0xfb, 0x14, 0x47, 0xc0, 0xb9,
-	0x51, 0xbe, 0xf0, 0xd3, 0x44, 0x79, 0xf1, 0x4d, 0xa2, 0xbc, 0x74, 0xc5, 0x28, 0x87, 0xab, 0x45,
-	0x79, 0xf9, 0x2a, 0x51, 0x8e, 0xee, 0x43, 0x65, 0xe8, 0x51, 0x12, 0xb8, 0x9e, 0x08, 0x03, 0x36,
-	0x25, 0x96, 0xb6, 0x81, 0x4c, 0x26, 0xc7, 0xae, 0x1f, 0x58, 0xce, 0x88, 0xcf, 0xa8, 0xe5, 0x88,
-	0x86, 0x97, 0xe5, 0x5f, 0xc0, 0xfb, 0x73, 0xc2, 0x6d, 0x10, 0x90, 0xc0, 0x7f, 0xcb, 0xc2, 0x99,
-	0x9d, 0x8d, 0xb8, 0x0f, 0xc5, 0xe7, 0x90, 0x13, 0x8e, 0x79, 0x57, 0xf5, 0x79, 0x6f, 0xcb, 0x6f,
-	0x4b, 0x9b, 0xb8, 0x3c, 0x26, 0xa7, 0xdd, 0x70, 0xcc, 0xc4, 0xfa, 0xca, 0xaf, 0x32, 0xa9, 0xbe,
-	0x30, 0x18, 0x12, 0xc7, 0xa1, 0x1e, 0x7f, 0x6e, 0x3b, 0x47, 0x2e, 0xda, 0x84, 0x45, 0x7a, 0x4a,
-	0x87, 0x61, 0x40, 0x4d, 0xc3, 0x26, 0x7e, 0x60, 0x8c, 0x2d, 0x27, 0x0c, 0x44, 0x7f, 0xcd, 0x62,
-	0x14, 0xe3, 0x3a, 0xc4, 0x0f, 0xf6, 0x39, 0x06, 0xdd, 0x03, 0x34, 0x7b, 0xe2, 0xd8, 0x0d, 0x3d,
-	0x9e, 0x0f, 0x59, 0x2c, 0xa7, 0xe9, 0x1f, 0xb9, 0xa1, 0x87, 0xb6, 0x61, 0xc5, 0x27, 0xe3, 0x09,
-	0xfb, 0x2e, 0x33, 0xcc, 0xd0, 0x23, 0x6c, 0xec, 0x8d, 0xd2, 0xc2, 0x8f, 0xf2, 0x62, 0x39, 0x26,
-	0x68, 0x45, 0x78, 0x91, 0x18, 0x3e, 0x93, 0x14, 0x87, 0x90, 0x61, 0x39, 0xc6, 0x91, 0x6d, 0x8d,
-	0x8e, 0x03, 0xfe, 0x71, 0x91, 0xc7, 0x72, 0x8c, 0x69, 0x3b, 0x0f, 0x39, 0x1c, 0xdd, 0x85, 0x2a,
-	0x75, 0x8e, 0x58, 0xdf, 0x4b, 0x25, 0x86, 0x84, 0x2b, 0x31, 0x90, 0xe5, 0x84, 0xf2, 0xbb, 0x0c,
-	0xac, 0xbd, 0xda, 0x1b, 0x51, 0xe1, 0xf8, 0x26, 0xb2, 0xbb, 0xcf, 0xa0, 0x51, 0xf5, 0x78, 0x70,
-	0x79, 0xf5, 0x98, 0x61, 0xb0, 0x91, 0x02, 0xa5, 0x38, 0x35, 0x7f, 0x90, 0x00, 0xa6, 0x28, 0xd6,
-	0xcc, 0xa7, 0xbe, 0x13, 0xc5, 0xad, 0xe8, 0x44, 0x5e, 0x43, 0x1f, 0x41, 0xdd, 0xb5, 0x4d, 0xea,
-	0x07, 0xc6, 0xb9, 0xef, 0xb6, 0xaa, 0x00, 0x6b, 0xd1, 0xd7, 0xdb, 0x1e, 0x54, 0x7c, 0xe1, 0x53,
-	0xc3, 0x72, 0x8e, 0x5c, 0x6e, 0x9d, 0xf2, 0xd6, 0x07, 0x73, 0xbb, 0xfb, 0x39, 0xdf, 0xe3, 0x72,
-	0x74, 0x92, 0xbd, 0x28, 0xc7, 0xd0, 0x4c, 0x28, 0xfb, 0xac, 0x42, 0xbc, 0xb2, 0xb5, 0x67, 0xde,
-	0xb8, 0xb5, 0x2f, 0x42, 0x9e, 0x17, 0x1b, 0x7e, 0xf5, 0x22, 0x16, 0x2f, 0xca, 0xed, 0x54, 0x27,
-	0x48, 0x4b, 0x8a, 0x1a, 0x05, 0x4e, 0x5f, 0x24, 0xf4, 0x46, 0x3f, 0xc2, 0x8c, 0x31, 0x2b, 0x32,
-	0xc5, 0x33, 0x12, 0x39, 0x48, 0xa1, 0xc5, 0x1c, 0x78, 0x7d, 0xe5, 0x67, 0x1a, 0xe2, 0x0c, 0xd3,
-	0x48, 0xe8, 0xff, 0x5c, 0x10, 0xba, 0xe7, 0xb9, 0xe1, 0xe4, 0x72, 0xa1, 0x73, 0xb8, 0x46, 0xa7,
-	0x22, 0xae, 0x7f, 0x95, 0x52, 0xe6, 0x7b, 0x12, 0x52, 0xef, 0x8c, 0xc7, 0xd3, 0xf5, 0x46, 0xb4,
-	0x8f, 0xa0, 0xee, 0x07, 0xc4, 0x0b, 0x2e, 0x4c, 0xef, 0x55, 0x0e, 0x8e, 0x87, 0x77, 0xf4, 0x01,
-	0xd4, 0x04, 0x5d, 0x12, 0xb3, 0x39, 0xbe, 0x20, 0xaa, 0x70, 0x68, 0x1c, 0xb2, 0xab, 0x50, 0x8a,
-	0xb9, 0x8d, 0xf8, 0x5c, 0xc5, 0xbe, 0xf2, 0x04, 0x9f, 0x11, 0x7a, 0x37, 0xd5, 0xf0, 0xc5, 0x7a,
-	0x47, 0xba, 0x3f, 0xed, 0xf9, 0xbf, 0x84, 0x94, 0xd1, 0xd2, 0xda, 0x45, 0x99, 0xfb, 0x15, 0xe4,
-	0xd8, 0x15, 0xa3, 0x9c, 0xfd, 0x74, 0x5e, 0x16, 0x5c, 0x3c, 0x25, 0x3e, 0x83, 0xf8, 0xc1, 0xe6,
-	0x1f, 0x4a, 0x90, 0x63, 0xaf, 0x57, 0xde, 0xa6, 0x5c, 0xdc, 0x80, 0x3c, 0x39, 0xb7, 0x5f, 0xf9,
-	0xbf, 0xb7, 0xb8, 0xd5, 0xec, 0xb2, 0x25, 0x59, 0xb3, 0x28, 0xf1, 0xa2, 0x6e, 0xe8, 0x86, 0x4e,
-	0xc0, 0x6d, 0xc8, 0xeb, 0xbe, 0xd8, 0xd5, 0xed, 0x32, 0x20, 0xfa, 0x3a, 0x59, 0xbc, 0x2c, 0x70,
-	0x63, 0x6c, 0xbd, 0x8d, 0xd8, 0x73, 0x5b, 0x98, 0x55, 0x28, 0x1d, 0xba, 0xe6, 0x99, 0xe1, 0x5b,
-	0x2f, 0x28, 0xef, 0xb7, 0x79, 0x5c, 0x64, 0x80, 0x81, 0xf5, 0x82, 0x26, 0x2b, 0x9a, 0xf2, 0xb9,
-	0x15, 0xcd, 0x3d, 0x40, 0xbc, 0x0d, 0xb2, 0x82, 0xcf, 0x3e, 0xd4, 0x85, 0xb9, 0x2a, 0xa2, 0x4f,
-	0xc4, 0x18, 0xf6, 0xe9, 0xcf, 0xed, 0x66, 0x9c, 0xdf, 0xbf, 0x54, 0xf9, 0xfe, 0xe5, 0xad, 0x8c,
-	0x75, 0xe9, 0x32, 0xe6, 0x6b, 0x28, 0x78, 0xa1, 0x63, 0xbb, 0x23, 0xbe, 0x69, 0x79, 0x4b, 0x7b,
-	0xe0, 0xd0, 0xe9, 0xb8, 0x23, 0x1c, 0x71, 0x38, 0xbf, 0xd8, 0xb9, 0x75, 0xe9, 0x62, 0x67, 0xe9,
-	0xea, 0x8b, 0x9d, 0xe5, 0x6b, 0x8c, 0x63, 0x1f, 0x40, 0xed, 0xc8, 0xf2, 0xfc, 0xc0, 0x60, 0x3c,
-	0xb9, 0xe9, 0x1b, 0x22, 0x17, 0x39, 0x54, 0xf7, 0xce, 0xe2, 0x70, 0x65, 0x59, 0xb8, 0x92, 0x6c,
-	0x71, 0xd0, 0x27, 0x50, 0x17, 0x4d, 0x9c, 0xf9, 0x4d, 0xc4, 0x57, 0x33, 0x8e, 0xaf, 0x5a, 0x82,
-	0xe1, 0x31, 0x76, 0x71, 0xe3, 0x53, 0x9c, 0xb3, 0xf1, 0x29, 0xbd, 0xf1, 0xc6, 0xa7, 0x76, 0xc9,
-	0xc6, 0xa7, 0x3e, 0xbb, 0xf1, 0x69, 0xfe, 0x49, 0x82, 0x82, 0xf0, 0x0a, 0x1b, 0xa0, 0x4d, 0xcb,
-	0x9f, 0x90, 0x80, 0x9d, 0x13, 0xaa, 0xde, 0xe0, 0x51, 0x56, 0x9b, 0x82, 0xb9, 0xb2, 0x2b, 0x50,
-	0xb4, 0xc9, 0x48, 0x50, 0x20, 0x91, 0xb6, 0x36, 0x19, 0x71, 0xd4, 0x1d, 0xa8, 0x50, 0x9b, 0x4c,
-	0xfc, 0x98, 0xc1, 0x4d, 0x8e, 0x2e, 0x47, 0x30, 0x4e, 0x72, 0x17, 0xaa, 0x5e, 0x14, 0x14, 0xc6,
-	0x90, 0x0d, 0xac, 0x8b, 0xc2, 0x9e, 0x31, 0x90, 0xff, 0xd8, 0x73, 0x07, 0x2a, 0xc2, 0x8b, 0x1e,
-	0x25, 0xbe, 0xeb, 0x34, 0x56, 0xf9, 0x70, 0x2e, 0xb2, 0x15, 0x73, 0xd0, 0x8f, 0xb1, 0xab, 0x72,
-	0xd2, 0x5f, 0xfa, 0x6c, 0x06, 0x11, 0xeb, 0x9a, 0x9f, 0x6c, 0xb3, 0xf0, 0x6d, 0xaa, 0xa7, 0xa4,
-	0xe4, 0x45, 0x45, 0x77, 0x3b, 0x29, 0xba, 0x99, 0xf5, 0xf2, 0xd6, 0x47, 0x6f, 0x96, 0x57, 0xa2,
-	0xde, 0x2a, 0x4f, 0x40, 0x39, 0xf7, 0xd5, 0x38, 0x08, 0x5c, 0x2f, 0xfe, 0x3d, 0xe1, 0x35, 0x0d,
-	0x78, 0x11, 0xf2, 0xe2, 0x97, 0x0a, 0x31, 0x7c, 0x8a, 0x17, 0x65, 0x07, 0xee, 0x5e, 0xca, 0x32,
-	0xba, 0x35, 0x9b, 0xbe, 0xe8, 0xf3, 0xe4, 0xa7, 0x0e, 0xc6, 0xa0, 0xe8, 0xd0, 0xe7, 0x9c, 0x48,
-	0xf9, 0xb3, 0x94, 0x1a, 0x13, 0xf9, 0xe5, 0x55, 0xc7, 0xec, 0x3d, 0x77, 0x66, 0x7a, 0xe9, 0x6b,
-	0x16, 0x52, 0x77, 0xa1, 0x6a, 0x53, 0xe2, 0xd3, 0x64, 0xda, 0xcd, 0xf0, 0x69, 0xb7, 0xc2, 0x81,
-	0xf1, 0x88, 0xbb, 0x0a, 0x25, 0xd6, 0xee, 0xe2, 0xf9, 0x9d, 0xdf, 0x62, 0x4c, 0x4e, 0xc5, 0x0c,
-	0xf8, 0x31, 0x54, 0x46, 0xac, 0xb9, 0x1b, 0x87, 0x67, 0xbc, 0x57, 0xb2, 0xa6, 0x92, 0x7c, 0xc6,
-	0x01, 0x47, 0xed, 0x9c, 0xb1, 0xa6, 0x19, 0x65, 0x71, 0x3e, 0xc9, 0x62, 0xe5, 0x9f, 0x12, 0xdc,
-	0xb9, 0x44, 0x81, 0xc8, 0x06, 0xda, 0x4c, 0xbb, 0xbc, 0xff, 0x4a, 0xcf, 0xcd, 0x39, 0x9b, 0x6e,
-	0x9a, 0xbf, 0x96, 0xae, 0xd9, 0x34, 0xcf, 0xf5, 0xb3, 0xdc, 0xbc, 0x7e, 0x16, 0xb7, 0x99, 0xfc,
-	0xb9, 0x36, 0x13, 0xe9, 0x5e, 0x98, 0xea, 0xfe, 0x7b, 0x29, 0xf5, 0xc5, 0xb5, 0xef, 0x9a, 0xd6,
-	0x11, 0x0f, 0xbd, 0x0e, 0xb3, 0xfb, 0x4f, 0xfc, 0x5b, 0xca, 0x05, 0x9f, 0xe7, 0x2e, 0xfa, 0x5c,
-	0xe9, 0xa4, 0x62, 0xeb, 0xc2, 0xf5, 0xa6, 0x5b, 0xe7, 0x90, 0xc7, 0xae, 0x39, 0x9d, 0xa5, 0x44,
-	0x90, 0xd6, 0x22, 0x78, 0x34, 0x4d, 0xed, 0x94, 0xbf, 0x2b, 0x25, 0xbf, 0x77, 0xff, 0x3b, 0x00,
-	0x00, 0xff, 0xff, 0x67, 0xac, 0x35, 0x53, 0x2a, 0x1f, 0x00, 0x00,
+func (x *TaskQueueQueryAndOwnTasksResponse_TaskType) GetBody() []byte {
+	if x != nil {
+		return x.Body
+	}
+	return nil
+}
+
+func (x *TaskQueueQueryAndOwnTasksResponse_TaskType) GetTag() []byte {
+	if x != nil {
+		return x.Tag
+	}
+	return nil
+}
+
+var File_taskqueue_service_proto protoreflect.FileDescriptor
+
+var file_taskqueue_service_proto_rawDesc = []byte{
+	0x0a, 0x17, 0x74, 0x61, 0x73, 0x6b, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x1a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
+	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73,
+	0x74, 0x6f, 0x72, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x76,
+	0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x95, 0x05, 0x0a, 0x15, 0x54, 0x61, 0x73, 0x6b,
+	0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f,
+	0x72, 0x22, 0xfb, 0x04, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
+	0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
+	0x57, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x52,
+	0x41, 0x4e, 0x53, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12,
+	0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+	0x52, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x54, 0x4f, 0x4f, 0x5f,
+	0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x56, 0x41, 0x4c,
+	0x49, 0x44, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x05, 0x12, 0x16,
+	0x0a, 0x12, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f,
+	0x4e, 0x41, 0x4d, 0x45, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
+	0x44, 0x5f, 0x55, 0x52, 0x4c, 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4e, 0x56, 0x41, 0x4c,
+	0x49, 0x44, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x10, 0x08, 0x12,
+	0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45,
+	0x4e, 0x49, 0x45, 0x44, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x41,
+	0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x0a, 0x12,
+	0x13, 0x0a, 0x0f, 0x54, 0x4f, 0x4d, 0x42, 0x53, 0x54, 0x4f, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x41,
+	0x53, 0x4b, 0x10, 0x0b, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f,
+	0x45, 0x54, 0x41, 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44,
+	0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e,
+	0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10,
+	0x54, 0x4f, 0x4d, 0x42, 0x53, 0x54, 0x4f, 0x4e, 0x45, 0x44, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45,
+	0x10, 0x0f, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f,
+	0x54, 0x41, 0x53, 0x4b, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x10, 0x12, 0x0b, 0x0a, 0x07, 0x53,
+	0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x11, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x4f, 0x4f, 0x5f,
+	0x4d, 0x41, 0x4e, 0x59, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x53, 0x10, 0x12, 0x12, 0x13, 0x0a, 0x0f,
+	0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x10,
+	0x13, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x52, 0x45, 0x54,
+	0x52, 0x59, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x53, 0x10, 0x14, 0x12,
+	0x16, 0x0a, 0x12, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45,
+	0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x15, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x43, 0x4c, 0x5f, 0x4c,
+	0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x16, 0x12, 0x23, 0x0a,
+	0x1f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x52,
+	0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x41, 0x52, 0x47, 0x45,
+	0x10, 0x17, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f,
+	0x43, 0x52, 0x45, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x18, 0x12, 0x16,
+	0x0a, 0x12, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x5f, 0x45, 0x58, 0x50,
+	0x49, 0x52, 0x45, 0x44, 0x10, 0x19, 0x12, 0x10, 0x0a, 0x0c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f,
+	0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x1a, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x56, 0x41,
+	0x4c, 0x49, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x1b, 0x12, 0x14, 0x0a, 0x0f, 0x44, 0x41, 0x54,
+	0x41, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x90, 0x4e, 0x22,
+	0x0d, 0x0a, 0x0b, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xc9,
+	0x02, 0x0a, 0x18, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x74, 0x72,
+	0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0b, 0x72,
+	0x65, 0x74, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01,
+	0x01, 0x12, 0x27, 0x0a, 0x0d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x73,
+	0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x0b, 0x61, 0x67, 0x65, 0x4c,
+	0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x69,
+	0x6e, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66,
+	0x66, 0x53, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x62,
+	0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01,
+	0x48, 0x03, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x53, 0x65,
+	0x63, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x6f, 0x75, 0x62,
+	0x6c, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x6d,
+	0x61, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0e,
+	0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x10,
+	0x0a, 0x0e, 0x5f, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x65, 0x63,
+	0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66,
+	0x5f, 0x73, 0x65, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x63,
+	0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x65, 0x63, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78,
+	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x50, 0x0a, 0x0c, 0x54, 0x61,
+	0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x63, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73,
+	0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09,
+	0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x72, 0x69,
+	0x74, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52,
+	0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x3d, 0x0a, 0x13,
+	0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2b, 0x0a, 0x0d, 0x54,
+	0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x1a, 0x0a, 0x04,
+	0x4d, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x55, 0x53, 0x48, 0x10, 0x00, 0x12, 0x08,
+	0x0a, 0x04, 0x50, 0x55, 0x4c, 0x4c, 0x10, 0x01, 0x22, 0xc3, 0x08, 0x0a, 0x13, 0x54, 0x61, 0x73,
+	0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+	0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0c, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08,
+	0x65, 0x74, 0x61, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
+	0x65, 0x74, 0x61, 0x55, 0x73, 0x65, 0x63, 0x12, 0x49, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f,
+	0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x64, 0x64,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d,
+	0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88,
+	0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x48,
+	0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x06, 0x48, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41,
+	0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x04,
+	0x62, 0x6f, 0x64, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x08, 0x01, 0x48, 0x02,
+	0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61,
+	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73,
+	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f,
+	0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x04, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49,
+	0x64, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x0d, 0x43, 0x72, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65,
+	0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75,
+	0x65, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x72, 0x6f, 0x6e,
+	0x54, 0x69, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x48, 0x05, 0x52,
+	0x0d, 0x43, 0x72, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01,
+	0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x06, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c,
+	0x6f, 0x61, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+	0x64, 0x48, 0x07, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12,
+	0x53, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
+	0x65, 0x72, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52,
+	0x65, 0x74, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x48, 0x08,
+	0x52, 0x0f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
+	0x73, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54,
+	0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x4d, 0x6f, 0x64,
+	0x65, 0x48, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03,
+	0x74, 0x61, 0x67, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x0a, 0x52, 0x03, 0x74, 0x61, 0x67,
+	0x88, 0x01, 0x01, 0x1a, 0x34, 0x0a, 0x0a, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03,
+	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01,
+	0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4b, 0x0a, 0x11, 0x43, 0x72, 0x6f,
+	0x6e, 0x54, 0x69, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a,
+	0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x69,
+	0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x69,
+	0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x22, 0x4b, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10,
+	0x00, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f,
+	0x53, 0x54, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x45, 0x41, 0x44, 0x10, 0x03, 0x12, 0x07,
+	0x0a, 0x03, 0x50, 0x55, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54,
+	0x45, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x06,
+	0x0a, 0x04, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x42,
+	0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42,
+	0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x43,
+	0x72, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c,
+	0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08,
+	0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x74,
+	0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x07, 0x0a,
+	0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x22, 0x5a,
+	0x0a, 0x14, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x64, 0x64, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x10, 0x63, 0x68, 0x6f, 0x73, 0x65, 0x6e,
+	0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
+	0x48, 0x00, 0x52, 0x0e, 0x63, 0x68, 0x6f, 0x73, 0x65, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x61,
+	0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x68, 0x6f, 0x73, 0x65, 0x6e,
+	0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x17, 0x54, 0x61,
+	0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x64, 0x64, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x5f, 0x72, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65,
+	0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x89, 0x02, 0x0a, 0x18, 0x54, 0x61, 0x73, 0x6b, 0x51,
+	0x75, 0x65, 0x75, 0x65, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c,
+	0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x42, 0x75, 0x6c,
+	0x6b, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x73,
+	0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x54, 0x61, 0x73,
+	0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x98, 0x01, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b,
+	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, 0x06, 0x72, 0x65,
+	0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x45, 0x72, 0x72,
+	0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d,
+	0x0a, 0x10, 0x63, 0x68, 0x6f, 0x73, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x68, 0x6f, 0x73,
+	0x65, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a,
+	0x11, 0x5f, 0x63, 0x68, 0x6f, 0x73, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44,
+	0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
+	0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74,
+	0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08,
+	0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f,
+	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49,
+	0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x22,
+	0x5d, 0x0a, 0x17, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x06, 0x72, 0x65,
+	0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x45, 0x72, 0x72,
+	0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x7d,
+	0x0a, 0x18, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x6f, 0x72, 0x63, 0x65,
+	0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x06, 0x61, 0x70,
+	0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70,
+	0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f,
+	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75,
+	0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61,
+	0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x22, 0x5f, 0x0a,
+	0x19, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52,
+	0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x06, 0x72, 0x65,
+	0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x45, 0x72, 0x72,
+	0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x97,
+	0x05, 0x0a, 0x1b, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x55, 0x70, 0x64, 0x61,
+	0x74, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a,
+	0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00,
+	0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75,
+	0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09,
+	0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x62, 0x75, 0x63,
+	0x6b, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73,
+	0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x62, 0x75, 0x63,
+	0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x69, 0x6c, 0x6c, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f,
+	0x6e, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x70,
+	0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x62, 0x75, 0x63,
+	0x6b, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x13, 0x75,
+	0x73, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x72, 0x61,
+	0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72,
+	0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x53, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65,
+	0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65,
+	0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x48,
+	0x02, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65,
+	0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e,
+	0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
+	0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e,
+	0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x36, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x1d, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73,
+	0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x48,
+	0x04, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x03, 0x61, 0x63,
+	0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x63, 0x6c,
+	0x48, 0x05, 0x52, 0x03, 0x61, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x0f, 0x68, 0x65,
+	0x61, 0x64, 0x65, 0x72, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x0a, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x72,
+	0x69, 0x64, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x16,
+	0x0a, 0x14, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65,
+	0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79,
+	0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
+	0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
+	0x42, 0x06, 0x0a, 0x04, 0x5f, 0x61, 0x63, 0x6c, 0x22, 0x1e, 0x0a, 0x1c, 0x54, 0x61, 0x73, 0x6b,
+	0x51, 0x75, 0x65, 0x75, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x1b, 0x54, 0x61, 0x73, 0x6b,
+	0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69,
+	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64,
+	0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x52, 0x6f, 0x77, 0x73, 0x42, 0x09,
+	0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x22, 0x9d, 0x06, 0x0a, 0x1c, 0x54, 0x61,
+	0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x75,
+	0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x05, 0x51, 0x75,
+	0x65, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46,
+	0x65, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x51, 0x75,
+	0x65, 0x75, 0x65, 0x1a, 0xb3, 0x05, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65,
+	0x12, 0x37, 0x0a, 0x18, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x69, 0x6c,
+	0x6c, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x01, 0x52, 0x15, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x69, 0x6c, 0x6c,
+	0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x75, 0x63,
+	0x6b, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x01, 0x52, 0x0e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69,
+	0x74, 0x79, 0x12, 0x33, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69,
+	0x66, 0x69, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x00, 0x52, 0x11, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64,
+	0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x75, 0x73, 0x65,
+	0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x75, 0x73, 0x65, 0x64, 0x12,
+	0x53, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
+	0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52,
+	0x65, 0x74, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x48, 0x01,
+	0x52, 0x0f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
+	0x73, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x63,
+	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18,
+	0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63,
+	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x88, 0x01,
+	0x01, 0x12, 0x36, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x1d, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b,
+	0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x03,
+	0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x03, 0x61, 0x63, 0x6c,
+	0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x63, 0x6c, 0x48,
+	0x04, 0x52, 0x03, 0x61, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x0f, 0x68, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54,
+	0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64,
+	0x65, 0x72, 0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69,
+	0x64, 0x65, 0x12, 0x2a, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x08, 0x01, 0x48, 0x05, 0x52, 0x0b,
+	0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x16,
+	0x0a, 0x14, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65,
+	0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79,
+	0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
+	0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
+	0x42, 0x06, 0x0a, 0x04, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x72, 0x65,
+	0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x1f, 0x54, 0x61,
+	0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68, 0x51, 0x75, 0x65, 0x75,
+	0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a,
+	0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52,
+	0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65,
+	0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x71,
+	0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f,
+	0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x01, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x88, 0x01,
+	0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e,
+	0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0xbd,
+	0x02, 0x0a, 0x19, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x63, 0x61, 0x6e,
+	0x6e, 0x65, 0x72, 0x51, 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x14,
+	0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69,
+	0x6e, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x65, 0x78, 0x65, 0x63,
+	0x75, 0x74, 0x65, 0x64, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x12, 0x2c,
+	0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f,
+	0x68, 0x6f, 0x75, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63,
+	0x75, 0x74, 0x65, 0x64, 0x4c, 0x61, 0x73, 0x74, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x3a, 0x0a, 0x19,
+	0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52,
+	0x17, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
+	0x49, 0x6e, 0x46, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65,
+	0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x01, 0x48, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x52, 0x61,
+	0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x42, 0x10, 0x0a, 0x0e,
+	0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0xb5,
+	0x02, 0x0a, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x65, 0x74, 0x63,
+	0x68, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74,
+	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x65, 0x74,
+	0x63, 0x68, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x54,
+	0x79, 0x70, 0x65, 0x52, 0x0a, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a,
+	0xb4, 0x01, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x54, 0x79,
+	0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12,
+	0x26, 0x0a, 0x0f, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x74, 0x61, 0x5f, 0x75, 0x73,
+	0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74,
+	0x45, 0x74, 0x61, 0x55, 0x73, 0x65, 0x63, 0x12, 0x4c, 0x0a, 0x0c, 0x73, 0x63, 0x61, 0x6e, 0x6e,
+	0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,
+	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75,
+	0x65, 0x75, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x51, 0x75, 0x65, 0x75, 0x65, 0x49,
+	0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e,
+	0x66, 0x6f, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65,
+	0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x68, 0x0a, 0x1a, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75,
+	0x65, 0x75, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x71,
+	0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
+	0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61,
+	0x75, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x70, 0x61, 0x75, 0x73, 0x65,
+	0x22, 0x1d, 0x0a, 0x1b, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x61, 0x75,
+	0x73, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+	0x62, 0x0a, 0x1a, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x75, 0x72, 0x67,
+	0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a,
+	0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52,
+	0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65,
+	0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x71,
+	0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70,
+	0x5f, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65,
+	0x50, 0x75, 0x72, 0x67, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x22, 0x53, 0x0a, 0x1b, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44,
+	0x65, 0x6c, 0x65, 0x74, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0c, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x75,
+	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x71, 0x75,
+	0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x54, 0x61, 0x73, 0x6b, 0x51,
+	0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x0a, 0x1b, 0x54, 0x61, 0x73, 0x6b, 0x51,
+	0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x1e, 0x0a,
+	0x1c, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+	0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbe, 0x02,
+	0x0a, 0x1a, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79,
+	0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x06,
+	0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05,
+	0x61, 0x70, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x75,
+	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x71, 0x75,
+	0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74,
+	0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
+	0x48, 0x01, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d,
+	0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x65, 0x74,
+	0x61, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x0c,
+	0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x74, 0x61, 0x55, 0x73, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12,
+	0x20, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x0c, 0x48, 0x03, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x67, 0x88, 0x01,
+	0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x52, 0x6f, 0x77, 0x73, 0x88, 0x01,
+	0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10,
+	0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x65, 0x74, 0x61, 0x5f, 0x75,
+	0x73, 0x65, 0x63, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x61,
+	0x67, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x22, 0xdd,
+	0x0c, 0x0a, 0x1b, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x51, 0x75, 0x65, 0x72,
+	0x79, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43,
+	0x0a, 0x04, 0x54, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65,
+	0x75, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54,
+	0x61, 0x73, 0x6b, 0x1a, 0xf8, 0x0b, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65,
+	0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a,
+	0x08, 0x65, 0x74, 0x61, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x07, 0x65, 0x74, 0x61, 0x55, 0x73, 0x65, 0x63, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12,
+	0x5a, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x3d, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b,
+	0x51, 0x75, 0x65, 0x75, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65,
+	0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x48, 0x01,
+	0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x72,
+	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01,
+	0x01, 0x12, 0x52, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61,
+	0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b,
+	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79,
+	0x70, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x48,
+	0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x73, 0x69,
+	0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x08, 0x62, 0x6f, 0x64, 0x79,
+	0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18,
+	0x0b, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x08, 0x01, 0x48, 0x04, 0x52, 0x04, 0x62, 0x6f, 0x64,
+	0x79, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x73,
+	0x65, 0x63, 0x12, 0x6c, 0x0a, 0x0d, 0x43, 0x72, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x74, 0x61,
+	0x62, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x51,
+	0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x54,
+	0x69, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x48, 0x05, 0x52, 0x0d,
+	0x43, 0x72, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x57, 0x0a, 0x06, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x3a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73,
+	0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x73,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70,
+	0x65, 0x2e, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x48, 0x06, 0x52, 0x06,
+	0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73,
+	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x07,
+	0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01,
+	0x12, 0x35, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61,
+	0x73, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x08, 0x52, 0x07, 0x70, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x72, 0x79,
+	0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61,
+	0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61,
+	0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x48, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50,
+	0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e,
+	0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x18,
+	0x20, 0x01, 0x28, 0x03, 0x48, 0x0a, 0x52, 0x0c, 0x66, 0x69, 0x72, 0x73, 0x74, 0x54, 0x72, 0x79,
+	0x55, 0x73, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x19,
+	0x20, 0x01, 0x28, 0x0c, 0x48, 0x0b, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2c,
+	0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x0c, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75,
+	0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x34, 0x0a, 0x0a,
+	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+	0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x1a, 0x4b, 0x0a, 0x11, 0x43, 0x72, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x74, 0x61,
+	0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64,
+	0x75, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64,
+	0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18,
+	0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x1a,
+	0xe8, 0x01, 0x0a, 0x0a, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27,
+	0x0a, 0x0f, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65,
+	0x63, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63,
+	0x68, 0x65, 0x64, 0x55, 0x73, 0x65, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x61, 0x67, 0x5f, 0x75,
+	0x73, 0x65, 0x63, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6c, 0x61, 0x67, 0x55, 0x73,
+	0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x75, 0x73,
+	0x65, 0x63, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65,
+	0x64, 0x55, 0x73, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c,
+	0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12,
+	0x26, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18,
+	0x1b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65,
+	0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65,
+	0x74, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x4b, 0x0a, 0x0d, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e,
+	0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x54, 0x10, 0x01, 0x12, 0x08,
+	0x0a, 0x04, 0x50, 0x4f, 0x53, 0x54, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x45, 0x41, 0x44,
+	0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x55, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x44,
+	0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x05, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x72, 0x6c, 0x42,
+	0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72,
+	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62,
+	0x6f, 0x64, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x6f, 0x64,
+	0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x43, 0x72, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x74, 0x61,
+	0x62, 0x6c, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x42, 0x0e,
+	0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a,
+	0x0a, 0x08, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72,
+	0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42,
+	0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x75, 0x73,
+	0x65, 0x63, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65,
+	0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x7e,
+	0x0a, 0x19, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68,
+	0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x06, 0x61,
+	0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x61,
+	0x70, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65,
+	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x71, 0x75, 0x65,
+	0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e,
+	0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x22, 0x58,
+	0x0a, 0x1a, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68,
+	0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x04,
+	0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65,
+	0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x22, 0x51, 0x0a, 0x22, 0x54, 0x61, 0x73, 0x6b,
+	0x51, 0x75, 0x65, 0x75, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
+	0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15,
+	0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05,
+	0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x42, 0x0a, 0x23, 0x54,
+	0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74,
+	0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22,
+	0xda, 0x01, 0x0a, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x51, 0x75, 0x65,
+	0x72, 0x79, 0x41, 0x6e, 0x64, 0x4f, 0x77, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e,
+	0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x63,
+	0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x73,
+	0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f,
+	0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78,
+	0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x25, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62,
+	0x79, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x67,
+	0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x54, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03,
+	0x74, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x01, 0x52, 0x03, 0x74, 0x61, 0x67,
+	0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79,
+	0x5f, 0x74, 0x61, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x22, 0xae, 0x02, 0x0a,
+	0x21, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41,
+	0x6e, 0x64, 0x4f, 0x77, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x54, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x35, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x61, 0x73,
+	0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 0x64, 0x4f, 0x77,
+	0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54,
+	0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x61, 0x73, 0x6b, 0x1a, 0xbd, 0x01,
+	0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61,
+	0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x74,
+	0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x74, 0x61, 0x5f, 0x75,
+	0x73, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x74, 0x61, 0x55, 0x73,
+	0x65, 0x63, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79,
+	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x08, 0x01, 0x48, 0x01, 0x52, 0x04, 0x62, 0x6f,
+	0x64, 0x79, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x0c, 0x48, 0x02, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c,
+	0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x07, 0x0a, 0x05,
+	0x5f, 0x62, 0x6f, 0x64, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x22, 0x9d, 0x01,
+	0x0a, 0x1f, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x69, 0x66,
+	0x79, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x4e, 0x61, 0x6d, 0x65,
+	0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0c, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a,
+	0x08, 0x65, 0x74, 0x61, 0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x07, 0x65, 0x74, 0x61, 0x55, 0x73, 0x65, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x73,
+	0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52,
+	0x0c, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x4c, 0x0a,
+	0x20, 0x54, 0x61, 0x73, 0x6b, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79,
+	0x54, 0x61, 0x73, 0x6b, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x74, 0x61,
+	0x5f, 0x75, 0x73, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x75, 0x70, 0x64,
+	0x61, 0x74, 0x65, 0x64, 0x45, 0x74, 0x61, 0x55, 0x73, 0x65, 0x63, 0x42, 0x30, 0x5a, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72,
+	0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x71, 0x75, 0x65, 0x75, 0x65, 0x62, 0x06, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_taskqueue_service_proto_rawDescOnce sync.Once
+	file_taskqueue_service_proto_rawDescData = file_taskqueue_service_proto_rawDesc
+)
+
+func file_taskqueue_service_proto_rawDescGZIP() []byte {
+	file_taskqueue_service_proto_rawDescOnce.Do(func() {
+		file_taskqueue_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_taskqueue_service_proto_rawDescData)
+	})
+	return file_taskqueue_service_proto_rawDescData
+}
+
+var file_taskqueue_service_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
+var file_taskqueue_service_proto_msgTypes = make([]protoimpl.MessageInfo, 49)
+var file_taskqueue_service_proto_goTypes = []interface{}{
+	(TaskQueueServiceError_ErrorCode)(0),                           // 0: appengine.TaskQueueServiceError.ErrorCode
+	(TaskQueueMode_Mode)(0),                                        // 1: appengine.TaskQueueMode.Mode
+	(TaskQueueAddRequest_RequestMethod)(0),                         // 2: appengine.TaskQueueAddRequest.RequestMethod
+	(TaskQueueQueryTasksResponse_TaskType_RequestMethod)(0),        // 3: appengine.TaskQueueQueryTasksResponse.TaskType.RequestMethod
+	(*TaskQueueServiceError)(nil),                                  // 4: appengine.TaskQueueServiceError
+	(*TaskPayload)(nil),                                            // 5: appengine.TaskPayload
+	(*TaskQueueRetryParameters)(nil),                               // 6: appengine.TaskQueueRetryParameters
+	(*TaskQueueAcl)(nil),                                           // 7: appengine.TaskQueueAcl
+	(*TaskQueueHttpHeader)(nil),                                    // 8: appengine.TaskQueueHttpHeader
+	(*TaskQueueMode)(nil),                                          // 9: appengine.TaskQueueMode
+	(*TaskQueueAddRequest)(nil),                                    // 10: appengine.TaskQueueAddRequest
+	(*TaskQueueAddResponse)(nil),                                   // 11: appengine.TaskQueueAddResponse
+	(*TaskQueueBulkAddRequest)(nil),                                // 12: appengine.TaskQueueBulkAddRequest
+	(*TaskQueueBulkAddResponse)(nil),                               // 13: appengine.TaskQueueBulkAddResponse
+	(*TaskQueueDeleteRequest)(nil),                                 // 14: appengine.TaskQueueDeleteRequest
+	(*TaskQueueDeleteResponse)(nil),                                // 15: appengine.TaskQueueDeleteResponse
+	(*TaskQueueForceRunRequest)(nil),                               // 16: appengine.TaskQueueForceRunRequest
+	(*TaskQueueForceRunResponse)(nil),                              // 17: appengine.TaskQueueForceRunResponse
+	(*TaskQueueUpdateQueueRequest)(nil),                            // 18: appengine.TaskQueueUpdateQueueRequest
+	(*TaskQueueUpdateQueueResponse)(nil),                           // 19: appengine.TaskQueueUpdateQueueResponse
+	(*TaskQueueFetchQueuesRequest)(nil),                            // 20: appengine.TaskQueueFetchQueuesRequest
+	(*TaskQueueFetchQueuesResponse)(nil),                           // 21: appengine.TaskQueueFetchQueuesResponse
+	(*TaskQueueFetchQueueStatsRequest)(nil),                        // 22: appengine.TaskQueueFetchQueueStatsRequest
+	(*TaskQueueScannerQueueInfo)(nil),                              // 23: appengine.TaskQueueScannerQueueInfo
+	(*TaskQueueFetchQueueStatsResponse)(nil),                       // 24: appengine.TaskQueueFetchQueueStatsResponse
+	(*TaskQueuePauseQueueRequest)(nil),                             // 25: appengine.TaskQueuePauseQueueRequest
+	(*TaskQueuePauseQueueResponse)(nil),                            // 26: appengine.TaskQueuePauseQueueResponse
+	(*TaskQueuePurgeQueueRequest)(nil),                             // 27: appengine.TaskQueuePurgeQueueRequest
+	(*TaskQueuePurgeQueueResponse)(nil),                            // 28: appengine.TaskQueuePurgeQueueResponse
+	(*TaskQueueDeleteQueueRequest)(nil),                            // 29: appengine.TaskQueueDeleteQueueRequest
+	(*TaskQueueDeleteQueueResponse)(nil),                           // 30: appengine.TaskQueueDeleteQueueResponse
+	(*TaskQueueDeleteGroupRequest)(nil),                            // 31: appengine.TaskQueueDeleteGroupRequest
+	(*TaskQueueDeleteGroupResponse)(nil),                           // 32: appengine.TaskQueueDeleteGroupResponse
+	(*TaskQueueQueryTasksRequest)(nil),                             // 33: appengine.TaskQueueQueryTasksRequest
+	(*TaskQueueQueryTasksResponse)(nil),                            // 34: appengine.TaskQueueQueryTasksResponse
+	(*TaskQueueFetchTaskRequest)(nil),                              // 35: appengine.TaskQueueFetchTaskRequest
+	(*TaskQueueFetchTaskResponse)(nil),                             // 36: appengine.TaskQueueFetchTaskResponse
+	(*TaskQueueUpdateStorageLimitRequest)(nil),                     // 37: appengine.TaskQueueUpdateStorageLimitRequest
+	(*TaskQueueUpdateStorageLimitResponse)(nil),                    // 38: appengine.TaskQueueUpdateStorageLimitResponse
+	(*TaskQueueQueryAndOwnTasksRequest)(nil),                       // 39: appengine.TaskQueueQueryAndOwnTasksRequest
+	(*TaskQueueQueryAndOwnTasksResponse)(nil),                      // 40: appengine.TaskQueueQueryAndOwnTasksResponse
+	(*TaskQueueModifyTaskLeaseRequest)(nil),                        // 41: appengine.TaskQueueModifyTaskLeaseRequest
+	(*TaskQueueModifyTaskLeaseResponse)(nil),                       // 42: appengine.TaskQueueModifyTaskLeaseResponse
+	(*TaskQueueAddRequest_HeaderType)(nil),                         // 43: appengine.TaskQueueAddRequest.HeaderType
+	(*TaskQueueAddRequest_CronTimetableType)(nil),                  // 44: appengine.TaskQueueAddRequest.CronTimetableType
+	(*TaskQueueBulkAddResponse_TaskResultType)(nil),                // 45: appengine.TaskQueueBulkAddResponse.TaskResultType
+	(*TaskQueueFetchQueuesResponse_QueueType)(nil),                 // 46: appengine.TaskQueueFetchQueuesResponse.QueueType
+	(*TaskQueueFetchQueueStatsResponse_QueueStatsType)(nil),        // 47: appengine.TaskQueueFetchQueueStatsResponse.QueueStatsType
+	(*TaskQueueQueryTasksResponse_TaskType)(nil),                   // 48: appengine.TaskQueueQueryTasksResponse.TaskType
+	(*TaskQueueQueryTasksResponse_TaskType_HeaderType)(nil),        // 49: appengine.TaskQueueQueryTasksResponse.TaskType.HeaderType
+	(*TaskQueueQueryTasksResponse_TaskType_CronTimetableType)(nil), // 50: appengine.TaskQueueQueryTasksResponse.TaskType.CronTimetableType
+	(*TaskQueueQueryTasksResponse_TaskType_RunLogType)(nil),        // 51: appengine.TaskQueueQueryTasksResponse.TaskType.RunLogType
+	(*TaskQueueQueryAndOwnTasksResponse_TaskType)(nil),             // 52: appengine.TaskQueueQueryAndOwnTasksResponse.TaskType
+	(*datastore.Transaction)(nil),                                  // 53: appengine.Transaction
+}
+var file_taskqueue_service_proto_depIdxs = []int32{
+	2,  // 0: appengine.TaskQueueAddRequest.method:type_name -> appengine.TaskQueueAddRequest.RequestMethod
+	43, // 1: appengine.TaskQueueAddRequest.Header:type_name -> appengine.TaskQueueAddRequest.HeaderType
+	53, // 2: appengine.TaskQueueAddRequest.transaction:type_name -> appengine.Transaction
+	44, // 3: appengine.TaskQueueAddRequest.CronTimetable:type_name -> appengine.TaskQueueAddRequest.CronTimetableType
+	5,  // 4: appengine.TaskQueueAddRequest.payload:type_name -> appengine.TaskPayload
+	6,  // 5: appengine.TaskQueueAddRequest.retry_parameters:type_name -> appengine.TaskQueueRetryParameters
+	1,  // 6: appengine.TaskQueueAddRequest.mode:type_name -> appengine.TaskQueueMode.Mode
+	10, // 7: appengine.TaskQueueBulkAddRequest.add_request:type_name -> appengine.TaskQueueAddRequest
+	45, // 8: appengine.TaskQueueBulkAddResponse.TaskResult:type_name -> appengine.TaskQueueBulkAddResponse.TaskResultType
+	0,  // 9: appengine.TaskQueueDeleteResponse.result:type_name -> appengine.TaskQueueServiceError.ErrorCode
+	0,  // 10: appengine.TaskQueueForceRunResponse.result:type_name -> appengine.TaskQueueServiceError.ErrorCode
+	6,  // 11: appengine.TaskQueueUpdateQueueRequest.retry_parameters:type_name -> appengine.TaskQueueRetryParameters
+	1,  // 12: appengine.TaskQueueUpdateQueueRequest.mode:type_name -> appengine.TaskQueueMode.Mode
+	7,  // 13: appengine.TaskQueueUpdateQueueRequest.acl:type_name -> appengine.TaskQueueAcl
+	8,  // 14: appengine.TaskQueueUpdateQueueRequest.header_override:type_name -> appengine.TaskQueueHttpHeader
+	46, // 15: appengine.TaskQueueFetchQueuesResponse.Queue:type_name -> appengine.TaskQueueFetchQueuesResponse.QueueType
+	47, // 16: appengine.TaskQueueFetchQueueStatsResponse.QueueStats:type_name -> appengine.TaskQueueFetchQueueStatsResponse.QueueStatsType
+	48, // 17: appengine.TaskQueueQueryTasksResponse.Task:type_name -> appengine.TaskQueueQueryTasksResponse.TaskType
+	34, // 18: appengine.TaskQueueFetchTaskResponse.task:type_name -> appengine.TaskQueueQueryTasksResponse
+	52, // 19: appengine.TaskQueueQueryAndOwnTasksResponse.Task:type_name -> appengine.TaskQueueQueryAndOwnTasksResponse.TaskType
+	0,  // 20: appengine.TaskQueueBulkAddResponse.TaskResultType.result:type_name -> appengine.TaskQueueServiceError.ErrorCode
+	6,  // 21: appengine.TaskQueueFetchQueuesResponse.QueueType.retry_parameters:type_name -> appengine.TaskQueueRetryParameters
+	1,  // 22: appengine.TaskQueueFetchQueuesResponse.QueueType.mode:type_name -> appengine.TaskQueueMode.Mode
+	7,  // 23: appengine.TaskQueueFetchQueuesResponse.QueueType.acl:type_name -> appengine.TaskQueueAcl
+	8,  // 24: appengine.TaskQueueFetchQueuesResponse.QueueType.header_override:type_name -> appengine.TaskQueueHttpHeader
+	23, // 25: appengine.TaskQueueFetchQueueStatsResponse.QueueStatsType.scanner_info:type_name -> appengine.TaskQueueScannerQueueInfo
+	3,  // 26: appengine.TaskQueueQueryTasksResponse.TaskType.method:type_name -> appengine.TaskQueueQueryTasksResponse.TaskType.RequestMethod
+	49, // 27: appengine.TaskQueueQueryTasksResponse.TaskType.Header:type_name -> appengine.TaskQueueQueryTasksResponse.TaskType.HeaderType
+	50, // 28: appengine.TaskQueueQueryTasksResponse.TaskType.CronTimetable:type_name -> appengine.TaskQueueQueryTasksResponse.TaskType.CronTimetableType
+	51, // 29: appengine.TaskQueueQueryTasksResponse.TaskType.RunLog:type_name -> appengine.TaskQueueQueryTasksResponse.TaskType.RunLogType
+	5,  // 30: appengine.TaskQueueQueryTasksResponse.TaskType.payload:type_name -> appengine.TaskPayload
+	6,  // 31: appengine.TaskQueueQueryTasksResponse.TaskType.retry_parameters:type_name -> appengine.TaskQueueRetryParameters
+	32, // [32:32] is the sub-list for method output_type
+	32, // [32:32] is the sub-list for method input_type
+	32, // [32:32] is the sub-list for extension type_name
+	32, // [32:32] is the sub-list for extension extendee
+	0,  // [0:32] is the sub-list for field type_name
+}
+
+func init() { file_taskqueue_service_proto_init() }
+func file_taskqueue_service_proto_init() {
+	if File_taskqueue_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_taskqueue_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskPayload); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueRetryParameters); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueAcl); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueHttpHeader); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueMode); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueAddRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueAddResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueBulkAddRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueBulkAddResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueDeleteRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueDeleteResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueForceRunRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueForceRunResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueUpdateQueueRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueUpdateQueueResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueFetchQueuesRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueFetchQueuesResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueFetchQueueStatsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueScannerQueueInfo); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueFetchQueueStatsResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueuePauseQueueRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueuePauseQueueResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueuePurgeQueueRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueuePurgeQueueResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueDeleteQueueRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueDeleteQueueResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueDeleteGroupRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueDeleteGroupResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueQueryTasksRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueQueryTasksResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueFetchTaskRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueFetchTaskResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueUpdateStorageLimitRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueUpdateStorageLimitResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueQueryAndOwnTasksRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueQueryAndOwnTasksResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueModifyTaskLeaseRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueModifyTaskLeaseResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueAddRequest_HeaderType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueAddRequest_CronTimetableType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueBulkAddResponse_TaskResultType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueFetchQueuesResponse_QueueType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueFetchQueueStatsResponse_QueueStatsType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueQueryTasksResponse_TaskType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueQueryTasksResponse_TaskType_HeaderType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueQueryTasksResponse_TaskType_CronTimetableType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueQueryTasksResponse_TaskType_RunLogType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_taskqueue_service_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TaskQueueQueryAndOwnTasksResponse_TaskType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_taskqueue_service_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[6].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[7].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[10].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[12].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[14].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[16].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[18].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[19].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[23].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[29].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[31].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[35].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[41].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[42].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[43].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[44].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[47].OneofWrappers = []interface{}{}
+	file_taskqueue_service_proto_msgTypes[48].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_taskqueue_service_proto_rawDesc,
+			NumEnums:      4,
+			NumMessages:   49,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_taskqueue_service_proto_goTypes,
+		DependencyIndexes: file_taskqueue_service_proto_depIdxs,
+		EnumInfos:         file_taskqueue_service_proto_enumTypes,
+		MessageInfos:      file_taskqueue_service_proto_msgTypes,
+	}.Build()
+	File_taskqueue_service_proto = out.File
+	file_taskqueue_service_proto_rawDesc = nil
+	file_taskqueue_service_proto_goTypes = nil
+	file_taskqueue_service_proto_depIdxs = nil
 }
diff --git a/internal/taskqueue/taskqueue_service.proto b/internal/taskqueue/taskqueue_service.proto
index 419aaf57..b54b07af 100644
--- a/internal/taskqueue/taskqueue_service.proto
+++ b/internal/taskqueue/taskqueue_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "taskqueue";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/taskqueue";
 
 import "google.golang.org/appengine/internal/datastore/datastore_v3.proto";
 
@@ -43,17 +43,15 @@ message TaskQueueServiceError {
 }
 
 message TaskPayload {
-  extensions 10 to max;
-  option message_set_wire_format = true;
 }
 
 message TaskQueueRetryParameters {
   optional int32 retry_limit = 1;
   optional int64 age_limit_sec = 2;
 
-  optional double min_backoff_sec = 3 [default = 0.1];
-  optional double max_backoff_sec = 4 [default = 3600];
-  optional int32 max_doublings = 5 [default = 16];
+  optional double min_backoff_sec = 3;
+  optional double max_backoff_sec = 4;
+  optional int32 max_doublings = 5;
 }
 
 message TaskQueueAcl {
@@ -62,8 +60,8 @@ message TaskQueueAcl {
 }
 
 message TaskQueueHttpHeader {
-  required bytes key = 1;
-  required bytes value = 2;
+  bytes key = 1;
+  bytes value = 2;
 }
 
 message TaskQueueMode {
@@ -74,39 +72,42 @@ message TaskQueueMode {
 }
 
 message TaskQueueAddRequest {
-  required bytes queue_name = 1;
-  required bytes task_name = 2;
-  required int64 eta_usec = 3;
+ bytes queue_name = 1;
+ bytes task_name = 2;
+ int64 eta_usec = 3;
 
   enum RequestMethod {
+    NONE = 0;
     GET = 1;
     POST = 2;
     HEAD = 3;
     PUT = 4;
     DELETE = 5;
   }
-  optional RequestMethod method = 5 [default=POST];
+  optional RequestMethod method = 5 ;
 
   optional bytes url = 4;
 
-  repeated group Header = 6 {
-    required bytes key = 7;
-    required bytes value = 8;
+  repeated HeaderType Header = 6;
+  message HeaderType {
+   bytes key = 7;
+   bytes value = 8;
   }
 
   optional bytes body = 9 [ctype=CORD];
   optional Transaction transaction = 10;
   optional bytes app_id = 11;
 
-  optional group CronTimetable = 12 {
-    required bytes schedule = 13;
-    required bytes timezone = 14;
+  optional CronTimetableType CronTimetable = 12;
+  message CronTimetableType {
+   bytes schedule = 13;
+   bytes timezone = 14;
   }
 
   optional bytes description = 15;
   optional TaskPayload payload = 16;
   optional TaskQueueRetryParameters retry_parameters = 17;
-  optional TaskQueueMode.Mode mode = 18 [default=PUSH];
+  optional TaskQueueMode.Mode mode = 18 ;
   optional bytes tag = 19;
 }
 
@@ -119,14 +120,15 @@ message TaskQueueBulkAddRequest {
 }
 
 message TaskQueueBulkAddResponse {
-  repeated group TaskResult = 1 {
-    required TaskQueueServiceError.ErrorCode result = 2;
+  repeated TaskResultType TaskResult = 1;
+  message TaskResultType {
+   TaskQueueServiceError.ErrorCode result = 2;
     optional bytes chosen_task_name = 3;
   }
 }
 
 message TaskQueueDeleteRequest {
-  required bytes queue_name = 1;
+ bytes queue_name = 1;
   repeated bytes task_name = 2;
   optional bytes app_id = 3;
 }
@@ -137,23 +139,23 @@ message TaskQueueDeleteResponse {
 
 message TaskQueueForceRunRequest {
   optional bytes app_id = 1;
-  required bytes queue_name = 2;
-  required bytes task_name = 3;
+ bytes queue_name = 2;
+ bytes task_name = 3;
 }
 
 message TaskQueueForceRunResponse {
-  required TaskQueueServiceError.ErrorCode result = 3;
+ TaskQueueServiceError.ErrorCode result = 3;
 }
 
 message TaskQueueUpdateQueueRequest {
   optional bytes app_id = 1;
-  required bytes queue_name = 2;
-  required double bucket_refill_per_second = 3;
-  required int32 bucket_capacity = 4;
+ bytes queue_name = 2;
+ double bucket_refill_per_second = 3;
+ int32 bucket_capacity = 4;
   optional string user_specified_rate = 5;
   optional TaskQueueRetryParameters retry_parameters = 6;
   optional int32 max_concurrent_requests = 7;
-  optional TaskQueueMode.Mode mode = 8 [default = PUSH];
+  optional TaskQueueMode.Mode mode = 8;
   optional TaskQueueAcl acl = 9;
   repeated TaskQueueHttpHeader header_override = 10;
 }
@@ -163,50 +165,52 @@ message TaskQueueUpdateQueueResponse {
 
 message TaskQueueFetchQueuesRequest {
   optional bytes app_id = 1;
-  required int32 max_rows = 2;
+ int32 max_rows = 2;
 }
 
 message TaskQueueFetchQueuesResponse {
-  repeated group Queue = 1 {
-    required bytes queue_name = 2;
-    required double bucket_refill_per_second = 3;
-    required double bucket_capacity = 4;
+  repeated QueueType Queue = 1;
+  message QueueType {
+   bytes queue_name = 2;
+   double bucket_refill_per_second = 3;
+   double bucket_capacity = 4;
     optional string user_specified_rate = 5;
-    required bool paused = 6 [default=false];
+   bool paused = 6 ;
     optional TaskQueueRetryParameters retry_parameters = 7;
     optional int32 max_concurrent_requests = 8;
-    optional TaskQueueMode.Mode mode = 9 [default = PUSH];
+    optional TaskQueueMode.Mode mode = 9;
     optional TaskQueueAcl acl = 10;
     repeated TaskQueueHttpHeader header_override = 11;
-    optional string creator_name = 12 [ctype=CORD, default="apphosting"];
+    optional string creator_name = 12 [ctype=CORD];
   }
 }
 
 message TaskQueueFetchQueueStatsRequest {
   optional bytes app_id = 1;
   repeated bytes queue_name = 2;
-  optional int32 max_num_tasks = 3 [default = 0];
+  optional int32 max_num_tasks = 3;
 }
 
 message TaskQueueScannerQueueInfo {
-  required int64 executed_last_minute = 1;
-  required int64 executed_last_hour = 2;
-  required double sampling_duration_seconds = 3;
+ int64 executed_last_minute = 1;
+ int64 executed_last_hour = 2;
+ double sampling_duration_seconds = 3;
   optional int32 requests_in_flight = 4;
   optional double enforced_rate = 5;
 }
 
 message TaskQueueFetchQueueStatsResponse {
-  repeated group QueueStats = 1 {
-    required int32 num_tasks = 2;
-    required int64 oldest_eta_usec = 3;
+  repeated QueueStatsType QueueStats = 1;
+  message QueueStatsType {
+   int32 num_tasks = 2;
+   int64 oldest_eta_usec = 3;
     optional TaskQueueScannerQueueInfo scanner_info = 4;
   }
 }
 message TaskQueuePauseQueueRequest {
-  required bytes app_id = 1;
-  required bytes queue_name = 2;
-  required bool pause = 3;
+ bytes app_id = 1;
+ bytes queue_name = 2;
+  bool pause = 3;
 }
 
 message TaskQueuePauseQueueResponse {
@@ -214,22 +218,22 @@ message TaskQueuePauseQueueResponse {
 
 message TaskQueuePurgeQueueRequest {
   optional bytes app_id = 1;
-  required bytes queue_name = 2;
+  bytes queue_name = 2;
 }
 
 message TaskQueuePurgeQueueResponse {
 }
 
 message TaskQueueDeleteQueueRequest {
-  required bytes app_id = 1;
-  required bytes queue_name = 2;
+  bytes app_id = 1;
+  bytes queue_name = 2;
 }
 
 message TaskQueueDeleteQueueResponse {
 }
 
 message TaskQueueDeleteGroupRequest {
-  required bytes app_id = 1;
+  bytes app_id = 1;
 }
 
 message TaskQueueDeleteGroupResponse {
@@ -237,21 +241,23 @@ message TaskQueueDeleteGroupResponse {
 
 message TaskQueueQueryTasksRequest {
   optional bytes app_id = 1;
-  required bytes queue_name = 2;
+  bytes queue_name = 2;
 
   optional bytes start_task_name = 3;
   optional int64 start_eta_usec = 4;
   optional bytes start_tag = 6;
-  optional int32 max_rows = 5 [default = 1];
+  optional int32 max_rows = 5;
 }
 
 message TaskQueueQueryTasksResponse {
-  repeated group Task = 1 {
-    required bytes task_name = 2;
-    required int64 eta_usec = 3;
+  repeated TaskType Task = 1;
+  message TaskType {
+    bytes task_name = 2;
+    int64 eta_usec = 3;
     optional bytes url = 4;
 
     enum RequestMethod {
+      NONE = 0;
       GET = 1;
       POST = 2;
       HEAD = 3;
@@ -260,26 +266,29 @@ message TaskQueueQueryTasksResponse {
     }
     optional RequestMethod method = 5;
 
-    optional int32 retry_count = 6 [default=0];
+    optional int32 retry_count = 6 ;
 
-    repeated group Header = 7 {
-      required bytes key = 8;
-      required bytes value = 9;
+    repeated HeaderType Header = 7;
+    message HeaderType {
+      bytes key = 8;
+      bytes value = 9;
     }
 
     optional int32 body_size = 10;
     optional bytes body = 11 [ctype=CORD];
-    required int64 creation_time_usec = 12;
+    int64 creation_time_usec = 12;
 
-    optional group CronTimetable = 13 {
-      required bytes schedule = 14;
-      required bytes timezone = 15;
+    optional CronTimetableType CronTimetable = 13;
+    message CronTimetableType {
+      bytes schedule = 14;
+      bytes timezone = 15;
     }
 
-    optional group RunLog = 16 {
-      required int64 dispatched_usec = 17;
-      required int64 lag_usec = 18;
-      required int64 elapsed_usec = 19;
+    optional RunLogType RunLog = 16;
+    message RunLogType {
+      int64 dispatched_usec = 17;
+      int64 lag_usec = 18;
+      int64 elapsed_usec = 19;
       optional int64 response_code = 20;
       optional string retry_reason = 27;
     }
@@ -289,54 +298,55 @@ message TaskQueueQueryTasksResponse {
     optional TaskQueueRetryParameters retry_parameters = 23;
     optional int64 first_try_usec = 24;
     optional bytes tag = 25;
-    optional int32 execution_count = 26 [default=0];
+    optional int32 execution_count = 26 ;
   }
 }
 
 message TaskQueueFetchTaskRequest {
   optional bytes app_id = 1;
-  required bytes queue_name = 2;
-  required bytes task_name = 3;
+  bytes queue_name = 2;
+  bytes task_name = 3;
 }
 
 message TaskQueueFetchTaskResponse {
-  required TaskQueueQueryTasksResponse task = 1;
+  TaskQueueQueryTasksResponse task = 1;
 }
 
 message TaskQueueUpdateStorageLimitRequest {
-  required bytes app_id = 1;
-  required int64 limit = 2;
+  bytes app_id = 1;
+  int64 limit = 2;
 }
 
 message TaskQueueUpdateStorageLimitResponse {
-  required int64 new_limit = 1;
+  int64 new_limit = 1;
 }
 
 message TaskQueueQueryAndOwnTasksRequest {
-  required bytes queue_name = 1;
-  required double lease_seconds = 2;
-  required int64 max_tasks = 3;
-  optional bool group_by_tag = 4 [default=false];
+  bytes queue_name = 1;
+  double lease_seconds = 2;
+  int64 max_tasks = 3;
+  optional bool group_by_tag = 4 ;
   optional bytes tag = 5;
 }
 
 message TaskQueueQueryAndOwnTasksResponse {
-  repeated group Task = 1 {
-    required bytes task_name = 2;
-    required int64 eta_usec = 3;
-    optional int32 retry_count = 4 [default=0];
+  repeated TaskType Task = 1;
+  message TaskType {
+    bytes task_name = 2;
+    int64 eta_usec = 3;
+    optional int32 retry_count = 4 ;
     optional bytes body = 5 [ctype=CORD];
     optional bytes tag = 6;
   }
 }
 
 message TaskQueueModifyTaskLeaseRequest {
-  required bytes queue_name = 1;
-  required bytes task_name = 2;
-  required int64 eta_usec = 3;
-  required double lease_seconds = 4;
+  bytes queue_name = 1;
+  bytes task_name = 2;
+  int64 eta_usec = 3;
+  double lease_seconds = 4;
 }
 
 message TaskQueueModifyTaskLeaseResponse {
-  required int64 updated_eta_usec = 1;
+  int64 updated_eta_usec = 1;
 }
diff --git a/internal/transaction.go b/internal/transaction.go
index 2ae8ab9f..1edc213f 100644
--- a/internal/transaction.go
+++ b/internal/transaction.go
@@ -11,7 +11,7 @@ import (
 	"errors"
 	"reflect"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	basepb "google.golang.org/appengine/internal/base"
 	pb "google.golang.org/appengine/internal/datastore"
@@ -62,7 +62,7 @@ func RunTransactionOnce(c context.Context, f func(context.Context) error, xg boo
 	// Begin the transaction.
 	t := &transaction{}
 	req := &pb.BeginTransactionRequest{
-		App: proto.String(FullyQualifiedAppID(c)),
+		App: FullyQualifiedAppID(c),
 	}
 	if xg {
 		req.AllowMultipleEg = proto.Bool(true)
diff --git a/internal/urlfetch/urlfetch_service.pb.go b/internal/urlfetch/urlfetch_service.pb.go
index 5f727750..d26ce4b9 100644
--- a/internal/urlfetch/urlfetch_service.pb.go
+++ b/internal/urlfetch/urlfetch_service.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: urlfetch_service.proto
 
 package urlfetch
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 URLFetchServiceError_ErrorCode int32
 
@@ -36,60 +38,71 @@ const (
 	URLFetchServiceError_CONNECTION_ERROR         URLFetchServiceError_ErrorCode = 12
 )
 
-var URLFetchServiceError_ErrorCode_name = map[int32]string{
-	0:  "OK",
-	1:  "INVALID_URL",
-	2:  "FETCH_ERROR",
-	3:  "UNSPECIFIED_ERROR",
-	4:  "RESPONSE_TOO_LARGE",
-	5:  "DEADLINE_EXCEEDED",
-	6:  "SSL_CERTIFICATE_ERROR",
-	7:  "DNS_ERROR",
-	8:  "CLOSED",
-	9:  "INTERNAL_TRANSIENT_ERROR",
-	10: "TOO_MANY_REDIRECTS",
-	11: "MALFORMED_REPLY",
-	12: "CONNECTION_ERROR",
-}
-var URLFetchServiceError_ErrorCode_value = map[string]int32{
-	"OK":                       0,
-	"INVALID_URL":              1,
-	"FETCH_ERROR":              2,
-	"UNSPECIFIED_ERROR":        3,
-	"RESPONSE_TOO_LARGE":       4,
-	"DEADLINE_EXCEEDED":        5,
-	"SSL_CERTIFICATE_ERROR":    6,
-	"DNS_ERROR":                7,
-	"CLOSED":                   8,
-	"INTERNAL_TRANSIENT_ERROR": 9,
-	"TOO_MANY_REDIRECTS":       10,
-	"MALFORMED_REPLY":          11,
-	"CONNECTION_ERROR":         12,
-}
+// Enum value maps for URLFetchServiceError_ErrorCode.
+var (
+	URLFetchServiceError_ErrorCode_name = map[int32]string{
+		0:  "OK",
+		1:  "INVALID_URL",
+		2:  "FETCH_ERROR",
+		3:  "UNSPECIFIED_ERROR",
+		4:  "RESPONSE_TOO_LARGE",
+		5:  "DEADLINE_EXCEEDED",
+		6:  "SSL_CERTIFICATE_ERROR",
+		7:  "DNS_ERROR",
+		8:  "CLOSED",
+		9:  "INTERNAL_TRANSIENT_ERROR",
+		10: "TOO_MANY_REDIRECTS",
+		11: "MALFORMED_REPLY",
+		12: "CONNECTION_ERROR",
+	}
+	URLFetchServiceError_ErrorCode_value = map[string]int32{
+		"OK":                       0,
+		"INVALID_URL":              1,
+		"FETCH_ERROR":              2,
+		"UNSPECIFIED_ERROR":        3,
+		"RESPONSE_TOO_LARGE":       4,
+		"DEADLINE_EXCEEDED":        5,
+		"SSL_CERTIFICATE_ERROR":    6,
+		"DNS_ERROR":                7,
+		"CLOSED":                   8,
+		"INTERNAL_TRANSIENT_ERROR": 9,
+		"TOO_MANY_REDIRECTS":       10,
+		"MALFORMED_REPLY":          11,
+		"CONNECTION_ERROR":         12,
+	}
+)
 
 func (x URLFetchServiceError_ErrorCode) Enum() *URLFetchServiceError_ErrorCode {
 	p := new(URLFetchServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x URLFetchServiceError_ErrorCode) String() string {
-	return proto.EnumName(URLFetchServiceError_ErrorCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *URLFetchServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(URLFetchServiceError_ErrorCode_value, data, "URLFetchServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = URLFetchServiceError_ErrorCode(value)
-	return nil
+
+func (URLFetchServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_urlfetch_service_proto_enumTypes[0].Descriptor()
+}
+
+func (URLFetchServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_urlfetch_service_proto_enumTypes[0]
 }
+
+func (x URLFetchServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use URLFetchServiceError_ErrorCode.Descriptor instead.
 func (URLFetchServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{0, 0}
+	return file_urlfetch_service_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type URLFetchRequest_RequestMethod int32
 
 const (
+	URLFetchRequest_NONE   URLFetchRequest_RequestMethod = 0
 	URLFetchRequest_GET    URLFetchRequest_RequestMethod = 1
 	URLFetchRequest_POST   URLFetchRequest_RequestMethod = 2
 	URLFetchRequest_HEAD   URLFetchRequest_RequestMethod = 3
@@ -98,430 +111,647 @@ const (
 	URLFetchRequest_PATCH  URLFetchRequest_RequestMethod = 6
 )
 
-var URLFetchRequest_RequestMethod_name = map[int32]string{
-	1: "GET",
-	2: "POST",
-	3: "HEAD",
-	4: "PUT",
-	5: "DELETE",
-	6: "PATCH",
-}
-var URLFetchRequest_RequestMethod_value = map[string]int32{
-	"GET":    1,
-	"POST":   2,
-	"HEAD":   3,
-	"PUT":    4,
-	"DELETE": 5,
-	"PATCH":  6,
-}
+// Enum value maps for URLFetchRequest_RequestMethod.
+var (
+	URLFetchRequest_RequestMethod_name = map[int32]string{
+		0: "NONE",
+		1: "GET",
+		2: "POST",
+		3: "HEAD",
+		4: "PUT",
+		5: "DELETE",
+		6: "PATCH",
+	}
+	URLFetchRequest_RequestMethod_value = map[string]int32{
+		"NONE":   0,
+		"GET":    1,
+		"POST":   2,
+		"HEAD":   3,
+		"PUT":    4,
+		"DELETE": 5,
+		"PATCH":  6,
+	}
+)
 
 func (x URLFetchRequest_RequestMethod) Enum() *URLFetchRequest_RequestMethod {
 	p := new(URLFetchRequest_RequestMethod)
 	*p = x
 	return p
 }
+
 func (x URLFetchRequest_RequestMethod) String() string {
-	return proto.EnumName(URLFetchRequest_RequestMethod_name, int32(x))
-}
-func (x *URLFetchRequest_RequestMethod) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(URLFetchRequest_RequestMethod_value, data, "URLFetchRequest_RequestMethod")
-	if err != nil {
-		return err
-	}
-	*x = URLFetchRequest_RequestMethod(value)
-	return nil
-}
-func (URLFetchRequest_RequestMethod) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{1, 0}
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type URLFetchServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (URLFetchRequest_RequestMethod) Descriptor() protoreflect.EnumDescriptor {
+	return file_urlfetch_service_proto_enumTypes[1].Descriptor()
 }
 
-func (m *URLFetchServiceError) Reset()         { *m = URLFetchServiceError{} }
-func (m *URLFetchServiceError) String() string { return proto.CompactTextString(m) }
-func (*URLFetchServiceError) ProtoMessage()    {}
-func (*URLFetchServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{0}
+func (URLFetchRequest_RequestMethod) Type() protoreflect.EnumType {
+	return &file_urlfetch_service_proto_enumTypes[1]
 }
-func (m *URLFetchServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_URLFetchServiceError.Unmarshal(m, b)
+
+func (x URLFetchRequest_RequestMethod) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *URLFetchServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_URLFetchServiceError.Marshal(b, m, deterministic)
+
+// Deprecated: Use URLFetchRequest_RequestMethod.Descriptor instead.
+func (URLFetchRequest_RequestMethod) EnumDescriptor() ([]byte, []int) {
+	return file_urlfetch_service_proto_rawDescGZIP(), []int{1, 0}
 }
-func (dst *URLFetchServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_URLFetchServiceError.Merge(dst, src)
+
+type URLFetchServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *URLFetchServiceError) XXX_Size() int {
-	return xxx_messageInfo_URLFetchServiceError.Size(m)
+
+func (x *URLFetchServiceError) Reset() {
+	*x = URLFetchServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_urlfetch_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *URLFetchServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_URLFetchServiceError.DiscardUnknown(m)
+
+func (x *URLFetchServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_URLFetchServiceError proto.InternalMessageInfo
+func (*URLFetchServiceError) ProtoMessage() {}
 
-type URLFetchRequest struct {
-	Method                        *URLFetchRequest_RequestMethod `protobuf:"varint,1,req,name=Method,enum=appengine.URLFetchRequest_RequestMethod" json:"Method,omitempty"`
-	Url                           *string                        `protobuf:"bytes,2,req,name=Url" json:"Url,omitempty"`
-	Header                        []*URLFetchRequest_Header      `protobuf:"group,3,rep,name=Header,json=header" json:"header,omitempty"`
-	Payload                       []byte                         `protobuf:"bytes,6,opt,name=Payload" json:"Payload,omitempty"`
-	FollowRedirects               *bool                          `protobuf:"varint,7,opt,name=FollowRedirects,def=1" json:"FollowRedirects,omitempty"`
-	Deadline                      *float64                       `protobuf:"fixed64,8,opt,name=Deadline" json:"Deadline,omitempty"`
-	MustValidateServerCertificate *bool                          `protobuf:"varint,9,opt,name=MustValidateServerCertificate,def=1" json:"MustValidateServerCertificate,omitempty"`
-	XXX_NoUnkeyedLiteral          struct{}                       `json:"-"`
-	XXX_unrecognized              []byte                         `json:"-"`
-	XXX_sizecache                 int32                          `json:"-"`
-}
-
-func (m *URLFetchRequest) Reset()         { *m = URLFetchRequest{} }
-func (m *URLFetchRequest) String() string { return proto.CompactTextString(m) }
-func (*URLFetchRequest) ProtoMessage()    {}
-func (*URLFetchRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{1}
-}
-func (m *URLFetchRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_URLFetchRequest.Unmarshal(m, b)
-}
-func (m *URLFetchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_URLFetchRequest.Marshal(b, m, deterministic)
+func (x *URLFetchServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_urlfetch_service_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)
 }
-func (dst *URLFetchRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_URLFetchRequest.Merge(dst, src)
+
+// Deprecated: Use URLFetchServiceError.ProtoReflect.Descriptor instead.
+func (*URLFetchServiceError) Descriptor() ([]byte, []int) {
+	return file_urlfetch_service_proto_rawDescGZIP(), []int{0}
 }
-func (m *URLFetchRequest) XXX_Size() int {
-	return xxx_messageInfo_URLFetchRequest.Size(m)
+
+type URLFetchRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Method                        URLFetchRequest_RequestMethod `protobuf:"varint,1,opt,name=Method,proto3,enum=appengine.URLFetchRequest_RequestMethod" json:"Method,omitempty"`
+	Url                           string                        `protobuf:"bytes,2,opt,name=Url,proto3" json:"Url,omitempty"`
+	Header                        []*URLFetchRequest_HeaderType `protobuf:"bytes,3,rep,name=Header,proto3" json:"Header,omitempty"`
+	Payload                       []byte                        `protobuf:"bytes,6,opt,name=Payload,proto3,oneof" json:"Payload,omitempty"`
+	FollowRedirects               *bool                         `protobuf:"varint,7,opt,name=FollowRedirects,proto3,oneof" json:"FollowRedirects,omitempty"`
+	Deadline                      *float64                      `protobuf:"fixed64,8,opt,name=Deadline,proto3,oneof" json:"Deadline,omitempty"`
+	MustValidateServerCertificate *bool                         `protobuf:"varint,9,opt,name=MustValidateServerCertificate,proto3,oneof" json:"MustValidateServerCertificate,omitempty"`
+}
+
+func (x *URLFetchRequest) Reset() {
+	*x = URLFetchRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_urlfetch_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *URLFetchRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_URLFetchRequest.DiscardUnknown(m)
+
+func (x *URLFetchRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_URLFetchRequest proto.InternalMessageInfo
+func (*URLFetchRequest) ProtoMessage() {}
+
+func (x *URLFetchRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_urlfetch_service_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)
+}
 
-const Default_URLFetchRequest_FollowRedirects bool = true
-const Default_URLFetchRequest_MustValidateServerCertificate bool = true
+// Deprecated: Use URLFetchRequest.ProtoReflect.Descriptor instead.
+func (*URLFetchRequest) Descriptor() ([]byte, []int) {
+	return file_urlfetch_service_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *URLFetchRequest) GetMethod() URLFetchRequest_RequestMethod {
-	if m != nil && m.Method != nil {
-		return *m.Method
+func (x *URLFetchRequest) GetMethod() URLFetchRequest_RequestMethod {
+	if x != nil {
+		return x.Method
 	}
-	return URLFetchRequest_GET
+	return URLFetchRequest_NONE
 }
 
-func (m *URLFetchRequest) GetUrl() string {
-	if m != nil && m.Url != nil {
-		return *m.Url
+func (x *URLFetchRequest) GetUrl() string {
+	if x != nil {
+		return x.Url
 	}
 	return ""
 }
 
-func (m *URLFetchRequest) GetHeader() []*URLFetchRequest_Header {
-	if m != nil {
-		return m.Header
+func (x *URLFetchRequest) GetHeader() []*URLFetchRequest_HeaderType {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-func (m *URLFetchRequest) GetPayload() []byte {
-	if m != nil {
-		return m.Payload
+func (x *URLFetchRequest) GetPayload() []byte {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *URLFetchRequest) GetFollowRedirects() bool {
-	if m != nil && m.FollowRedirects != nil {
-		return *m.FollowRedirects
+func (x *URLFetchRequest) GetFollowRedirects() bool {
+	if x != nil && x.FollowRedirects != nil {
+		return *x.FollowRedirects
 	}
-	return Default_URLFetchRequest_FollowRedirects
+	return false
 }
 
-func (m *URLFetchRequest) GetDeadline() float64 {
-	if m != nil && m.Deadline != nil {
-		return *m.Deadline
+func (x *URLFetchRequest) GetDeadline() float64 {
+	if x != nil && x.Deadline != nil {
+		return *x.Deadline
 	}
 	return 0
 }
 
-func (m *URLFetchRequest) GetMustValidateServerCertificate() bool {
-	if m != nil && m.MustValidateServerCertificate != nil {
-		return *m.MustValidateServerCertificate
+func (x *URLFetchRequest) GetMustValidateServerCertificate() bool {
+	if x != nil && x.MustValidateServerCertificate != nil {
+		return *x.MustValidateServerCertificate
 	}
-	return Default_URLFetchRequest_MustValidateServerCertificate
+	return false
 }
 
-type URLFetchRequest_Header struct {
-	Key                  *string  `protobuf:"bytes,4,req,name=Key" json:"Key,omitempty"`
-	Value                *string  `protobuf:"bytes,5,req,name=Value" json:"Value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+type URLFetchResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Content               []byte                         `protobuf:"bytes,1,opt,name=Content,proto3,oneof" json:"Content,omitempty"`
+	StatusCode            int32                          `protobuf:"varint,2,opt,name=StatusCode,proto3" json:"StatusCode,omitempty"`
+	Header                []*URLFetchResponse_HeaderType `protobuf:"bytes,3,rep,name=Header,proto3" json:"Header,omitempty"`
+	ContentWasTruncated   *bool                          `protobuf:"varint,6,opt,name=ContentWasTruncated,proto3,oneof" json:"ContentWasTruncated,omitempty"`
+	ExternalBytesSent     *int64                         `protobuf:"varint,7,opt,name=ExternalBytesSent,proto3,oneof" json:"ExternalBytesSent,omitempty"`
+	ExternalBytesReceived *int64                         `protobuf:"varint,8,opt,name=ExternalBytesReceived,proto3,oneof" json:"ExternalBytesReceived,omitempty"`
+	FinalUrl              *string                        `protobuf:"bytes,9,opt,name=FinalUrl,proto3,oneof" json:"FinalUrl,omitempty"`
+	ApiCpuMilliseconds    *int64                         `protobuf:"varint,10,opt,name=ApiCpuMilliseconds,proto3,oneof" json:"ApiCpuMilliseconds,omitempty"`
+	ApiBytesSent          *int64                         `protobuf:"varint,11,opt,name=ApiBytesSent,proto3,oneof" json:"ApiBytesSent,omitempty"`
+	ApiBytesReceived      *int64                         `protobuf:"varint,12,opt,name=ApiBytesReceived,proto3,oneof" json:"ApiBytesReceived,omitempty"`
+}
+
+func (x *URLFetchResponse) Reset() {
+	*x = URLFetchResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_urlfetch_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-func (m *URLFetchRequest_Header) Reset()         { *m = URLFetchRequest_Header{} }
-func (m *URLFetchRequest_Header) String() string { return proto.CompactTextString(m) }
-func (*URLFetchRequest_Header) ProtoMessage()    {}
-func (*URLFetchRequest_Header) Descriptor() ([]byte, []int) {
-	return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{1, 0}
-}
-func (m *URLFetchRequest_Header) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_URLFetchRequest_Header.Unmarshal(m, b)
-}
-func (m *URLFetchRequest_Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_URLFetchRequest_Header.Marshal(b, m, deterministic)
-}
-func (dst *URLFetchRequest_Header) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_URLFetchRequest_Header.Merge(dst, src)
-}
-func (m *URLFetchRequest_Header) XXX_Size() int {
-	return xxx_messageInfo_URLFetchRequest_Header.Size(m)
-}
-func (m *URLFetchRequest_Header) XXX_DiscardUnknown() {
-	xxx_messageInfo_URLFetchRequest_Header.DiscardUnknown(m)
+func (x *URLFetchResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_URLFetchRequest_Header proto.InternalMessageInfo
+func (*URLFetchResponse) ProtoMessage() {}
 
-func (m *URLFetchRequest_Header) GetKey() string {
-	if m != nil && m.Key != nil {
-		return *m.Key
+func (x *URLFetchResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_urlfetch_service_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 ""
+	return mi.MessageOf(x)
 }
 
-func (m *URLFetchRequest_Header) GetValue() string {
-	if m != nil && m.Value != nil {
-		return *m.Value
-	}
-	return ""
-}
-
-type URLFetchResponse struct {
-	Content               []byte                     `protobuf:"bytes,1,opt,name=Content" json:"Content,omitempty"`
-	StatusCode            *int32                     `protobuf:"varint,2,req,name=StatusCode" json:"StatusCode,omitempty"`
-	Header                []*URLFetchResponse_Header `protobuf:"group,3,rep,name=Header,json=header" json:"header,omitempty"`
-	ContentWasTruncated   *bool                      `protobuf:"varint,6,opt,name=ContentWasTruncated,def=0" json:"ContentWasTruncated,omitempty"`
-	ExternalBytesSent     *int64                     `protobuf:"varint,7,opt,name=ExternalBytesSent" json:"ExternalBytesSent,omitempty"`
-	ExternalBytesReceived *int64                     `protobuf:"varint,8,opt,name=ExternalBytesReceived" json:"ExternalBytesReceived,omitempty"`
-	FinalUrl              *string                    `protobuf:"bytes,9,opt,name=FinalUrl" json:"FinalUrl,omitempty"`
-	ApiCpuMilliseconds    *int64                     `protobuf:"varint,10,opt,name=ApiCpuMilliseconds,def=0" json:"ApiCpuMilliseconds,omitempty"`
-	ApiBytesSent          *int64                     `protobuf:"varint,11,opt,name=ApiBytesSent,def=0" json:"ApiBytesSent,omitempty"`
-	ApiBytesReceived      *int64                     `protobuf:"varint,12,opt,name=ApiBytesReceived,def=0" json:"ApiBytesReceived,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{}                   `json:"-"`
-	XXX_unrecognized      []byte                     `json:"-"`
-	XXX_sizecache         int32                      `json:"-"`
-}
-
-func (m *URLFetchResponse) Reset()         { *m = URLFetchResponse{} }
-func (m *URLFetchResponse) String() string { return proto.CompactTextString(m) }
-func (*URLFetchResponse) ProtoMessage()    {}
+// Deprecated: Use URLFetchResponse.ProtoReflect.Descriptor instead.
 func (*URLFetchResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{2}
-}
-func (m *URLFetchResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_URLFetchResponse.Unmarshal(m, b)
-}
-func (m *URLFetchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_URLFetchResponse.Marshal(b, m, deterministic)
-}
-func (dst *URLFetchResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_URLFetchResponse.Merge(dst, src)
-}
-func (m *URLFetchResponse) XXX_Size() int {
-	return xxx_messageInfo_URLFetchResponse.Size(m)
-}
-func (m *URLFetchResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_URLFetchResponse.DiscardUnknown(m)
+	return file_urlfetch_service_proto_rawDescGZIP(), []int{2}
 }
 
-var xxx_messageInfo_URLFetchResponse proto.InternalMessageInfo
-
-const Default_URLFetchResponse_ContentWasTruncated bool = false
-const Default_URLFetchResponse_ApiCpuMilliseconds int64 = 0
-const Default_URLFetchResponse_ApiBytesSent int64 = 0
-const Default_URLFetchResponse_ApiBytesReceived int64 = 0
-
-func (m *URLFetchResponse) GetContent() []byte {
-	if m != nil {
-		return m.Content
+func (x *URLFetchResponse) GetContent() []byte {
+	if x != nil {
+		return x.Content
 	}
 	return nil
 }
 
-func (m *URLFetchResponse) GetStatusCode() int32 {
-	if m != nil && m.StatusCode != nil {
-		return *m.StatusCode
+func (x *URLFetchResponse) GetStatusCode() int32 {
+	if x != nil {
+		return x.StatusCode
 	}
 	return 0
 }
 
-func (m *URLFetchResponse) GetHeader() []*URLFetchResponse_Header {
-	if m != nil {
-		return m.Header
+func (x *URLFetchResponse) GetHeader() []*URLFetchResponse_HeaderType {
+	if x != nil {
+		return x.Header
 	}
 	return nil
 }
 
-func (m *URLFetchResponse) GetContentWasTruncated() bool {
-	if m != nil && m.ContentWasTruncated != nil {
-		return *m.ContentWasTruncated
+func (x *URLFetchResponse) GetContentWasTruncated() bool {
+	if x != nil && x.ContentWasTruncated != nil {
+		return *x.ContentWasTruncated
 	}
-	return Default_URLFetchResponse_ContentWasTruncated
+	return false
 }
 
-func (m *URLFetchResponse) GetExternalBytesSent() int64 {
-	if m != nil && m.ExternalBytesSent != nil {
-		return *m.ExternalBytesSent
+func (x *URLFetchResponse) GetExternalBytesSent() int64 {
+	if x != nil && x.ExternalBytesSent != nil {
+		return *x.ExternalBytesSent
 	}
 	return 0
 }
 
-func (m *URLFetchResponse) GetExternalBytesReceived() int64 {
-	if m != nil && m.ExternalBytesReceived != nil {
-		return *m.ExternalBytesReceived
+func (x *URLFetchResponse) GetExternalBytesReceived() int64 {
+	if x != nil && x.ExternalBytesReceived != nil {
+		return *x.ExternalBytesReceived
 	}
 	return 0
 }
 
-func (m *URLFetchResponse) GetFinalUrl() string {
-	if m != nil && m.FinalUrl != nil {
-		return *m.FinalUrl
+func (x *URLFetchResponse) GetFinalUrl() string {
+	if x != nil && x.FinalUrl != nil {
+		return *x.FinalUrl
 	}
 	return ""
 }
 
-func (m *URLFetchResponse) GetApiCpuMilliseconds() int64 {
-	if m != nil && m.ApiCpuMilliseconds != nil {
-		return *m.ApiCpuMilliseconds
+func (x *URLFetchResponse) GetApiCpuMilliseconds() int64 {
+	if x != nil && x.ApiCpuMilliseconds != nil {
+		return *x.ApiCpuMilliseconds
 	}
-	return Default_URLFetchResponse_ApiCpuMilliseconds
+	return 0
 }
 
-func (m *URLFetchResponse) GetApiBytesSent() int64 {
-	if m != nil && m.ApiBytesSent != nil {
-		return *m.ApiBytesSent
+func (x *URLFetchResponse) GetApiBytesSent() int64 {
+	if x != nil && x.ApiBytesSent != nil {
+		return *x.ApiBytesSent
 	}
-	return Default_URLFetchResponse_ApiBytesSent
+	return 0
 }
 
-func (m *URLFetchResponse) GetApiBytesReceived() int64 {
-	if m != nil && m.ApiBytesReceived != nil {
-		return *m.ApiBytesReceived
+func (x *URLFetchResponse) GetApiBytesReceived() int64 {
+	if x != nil && x.ApiBytesReceived != nil {
+		return *x.ApiBytesReceived
 	}
-	return Default_URLFetchResponse_ApiBytesReceived
+	return 0
 }
 
-type URLFetchResponse_Header struct {
-	Key                  *string  `protobuf:"bytes,4,req,name=Key" json:"Key,omitempty"`
-	Value                *string  `protobuf:"bytes,5,req,name=Value" json:"Value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+type URLFetchRequest_HeaderType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Key   string `protobuf:"bytes,4,opt,name=Key,proto3" json:"Key,omitempty"`
+	Value string `protobuf:"bytes,5,opt,name=Value,proto3" json:"Value,omitempty"`
 }
 
-func (m *URLFetchResponse_Header) Reset()         { *m = URLFetchResponse_Header{} }
-func (m *URLFetchResponse_Header) String() string { return proto.CompactTextString(m) }
-func (*URLFetchResponse_Header) ProtoMessage()    {}
-func (*URLFetchResponse_Header) Descriptor() ([]byte, []int) {
-	return fileDescriptor_urlfetch_service_b245a7065f33bced, []int{2, 0}
+func (x *URLFetchRequest_HeaderType) Reset() {
+	*x = URLFetchRequest_HeaderType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_urlfetch_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *URLFetchResponse_Header) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_URLFetchResponse_Header.Unmarshal(m, b)
+
+func (x *URLFetchRequest_HeaderType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *URLFetchResponse_Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_URLFetchResponse_Header.Marshal(b, m, deterministic)
+
+func (*URLFetchRequest_HeaderType) ProtoMessage() {}
+
+func (x *URLFetchRequest_HeaderType) ProtoReflect() protoreflect.Message {
+	mi := &file_urlfetch_service_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 URLFetchRequest_HeaderType.ProtoReflect.Descriptor instead.
+func (*URLFetchRequest_HeaderType) Descriptor() ([]byte, []int) {
+	return file_urlfetch_service_proto_rawDescGZIP(), []int{1, 0}
+}
+
+func (x *URLFetchRequest_HeaderType) GetKey() string {
+	if x != nil {
+		return x.Key
+	}
+	return ""
+}
+
+func (x *URLFetchRequest_HeaderType) GetValue() string {
+	if x != nil {
+		return x.Value
+	}
+	return ""
+}
+
+type URLFetchResponse_HeaderType struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Key   string `protobuf:"bytes,4,opt,name=Key,proto3" json:"Key,omitempty"`
+	Value string `protobuf:"bytes,5,opt,name=Value,proto3" json:"Value,omitempty"`
 }
-func (dst *URLFetchResponse_Header) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_URLFetchResponse_Header.Merge(dst, src)
+
+func (x *URLFetchResponse_HeaderType) Reset() {
+	*x = URLFetchResponse_HeaderType{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_urlfetch_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *URLFetchResponse_Header) XXX_Size() int {
-	return xxx_messageInfo_URLFetchResponse_Header.Size(m)
+
+func (x *URLFetchResponse_HeaderType) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *URLFetchResponse_Header) XXX_DiscardUnknown() {
-	xxx_messageInfo_URLFetchResponse_Header.DiscardUnknown(m)
+
+func (*URLFetchResponse_HeaderType) ProtoMessage() {}
+
+func (x *URLFetchResponse_HeaderType) ProtoReflect() protoreflect.Message {
+	mi := &file_urlfetch_service_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)
 }
 
-var xxx_messageInfo_URLFetchResponse_Header proto.InternalMessageInfo
+// Deprecated: Use URLFetchResponse_HeaderType.ProtoReflect.Descriptor instead.
+func (*URLFetchResponse_HeaderType) Descriptor() ([]byte, []int) {
+	return file_urlfetch_service_proto_rawDescGZIP(), []int{2, 0}
+}
 
-func (m *URLFetchResponse_Header) GetKey() string {
-	if m != nil && m.Key != nil {
-		return *m.Key
+func (x *URLFetchResponse_HeaderType) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
-func (m *URLFetchResponse_Header) GetValue() string {
-	if m != nil && m.Value != nil {
-		return *m.Value
+func (x *URLFetchResponse_HeaderType) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*URLFetchServiceError)(nil), "appengine.URLFetchServiceError")
-	proto.RegisterType((*URLFetchRequest)(nil), "appengine.URLFetchRequest")
-	proto.RegisterType((*URLFetchRequest_Header)(nil), "appengine.URLFetchRequest.Header")
-	proto.RegisterType((*URLFetchResponse)(nil), "appengine.URLFetchResponse")
-	proto.RegisterType((*URLFetchResponse_Header)(nil), "appengine.URLFetchResponse.Header")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto", fileDescriptor_urlfetch_service_b245a7065f33bced)
-}
-
-var fileDescriptor_urlfetch_service_b245a7065f33bced = []byte{
-	// 770 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xdd, 0x6e, 0xe3, 0x54,
-	0x10, 0xc6, 0x76, 0x7e, 0xa7, 0x5d, 0x7a, 0x76, 0xb6, 0x45, 0x66, 0xb5, 0xa0, 0x10, 0x09, 0x29,
-	0x17, 0x90, 0x2e, 0x2b, 0x24, 0x44, 0xaf, 0x70, 0xed, 0x93, 0xad, 0xa9, 0x63, 0x47, 0xc7, 0x4e,
-	0x61, 0xb9, 0xb1, 0xac, 0x78, 0x9a, 0x5a, 0xb2, 0xec, 0x60, 0x9f, 0x2c, 0xf4, 0x35, 0x78, 0x0d,
-	0xde, 0x87, 0xa7, 0xe1, 0x02, 0x9d, 0xc4, 0xc9, 0x6e, 0xbb, 0xd1, 0x4a, 0x5c, 0x65, 0xe6, 0x9b,
-	0xef, 0xcc, 0x99, 0x7c, 0xdf, 0xf8, 0x80, 0xb3, 0x2c, 0xcb, 0x65, 0x4e, 0xe3, 0x65, 0x99, 0x27,
-	0xc5, 0x72, 0x5c, 0x56, 0xcb, 0xf3, 0x64, 0xb5, 0xa2, 0x62, 0x99, 0x15, 0x74, 0x9e, 0x15, 0x92,
-	0xaa, 0x22, 0xc9, 0xcf, 0xd7, 0x55, 0x7e, 0x4b, 0x72, 0x71, 0xb7, 0x0f, 0xe2, 0x9a, 0xaa, 0xb7,
-	0xd9, 0x82, 0xc6, 0xab, 0xaa, 0x94, 0x25, 0xf6, 0xf7, 0x67, 0x86, 0x7f, 0xeb, 0x70, 0x3a, 0x17,
-	0xde, 0x44, 0xb1, 0xc2, 0x2d, 0x89, 0x57, 0x55, 0x59, 0x0d, 0xff, 0xd2, 0xa1, 0xbf, 0x89, 0xec,
-	0x32, 0x25, 0xec, 0x80, 0x1e, 0x5c, 0xb3, 0x4f, 0xf0, 0x04, 0x8e, 0x5c, 0xff, 0xc6, 0xf2, 0x5c,
-	0x27, 0x9e, 0x0b, 0x8f, 0x69, 0x0a, 0x98, 0xf0, 0xc8, 0xbe, 0x8a, 0xb9, 0x10, 0x81, 0x60, 0x3a,
-	0x9e, 0xc1, 0xd3, 0xb9, 0x1f, 0xce, 0xb8, 0xed, 0x4e, 0x5c, 0xee, 0x34, 0xb0, 0x81, 0x9f, 0x01,
-	0x0a, 0x1e, 0xce, 0x02, 0x3f, 0xe4, 0x71, 0x14, 0x04, 0xb1, 0x67, 0x89, 0xd7, 0x9c, 0xb5, 0x14,
-	0xdd, 0xe1, 0x96, 0xe3, 0xb9, 0x3e, 0x8f, 0xf9, 0xaf, 0x36, 0xe7, 0x0e, 0x77, 0x58, 0x1b, 0x3f,
-	0x87, 0xb3, 0x30, 0xf4, 0x62, 0x9b, 0x8b, 0xc8, 0x9d, 0xb8, 0xb6, 0x15, 0xf1, 0xa6, 0x53, 0x07,
-	0x9f, 0x40, 0xdf, 0xf1, 0xc3, 0x26, 0xed, 0x22, 0x40, 0xc7, 0xf6, 0x82, 0x90, 0x3b, 0xac, 0x87,
-	0x2f, 0xc0, 0x74, 0xfd, 0x88, 0x0b, 0xdf, 0xf2, 0xe2, 0x48, 0x58, 0x7e, 0xe8, 0x72, 0x3f, 0x6a,
-	0x98, 0x7d, 0x35, 0x82, 0xba, 0x79, 0x6a, 0xf9, 0x6f, 0x62, 0xc1, 0x1d, 0x57, 0x70, 0x3b, 0x0a,
-	0x19, 0xe0, 0x33, 0x38, 0x99, 0x5a, 0xde, 0x24, 0x10, 0x53, 0xee, 0xc4, 0x82, 0xcf, 0xbc, 0x37,
-	0xec, 0x08, 0x4f, 0x81, 0xd9, 0x81, 0xef, 0x73, 0x3b, 0x72, 0x03, 0xbf, 0x69, 0x71, 0x3c, 0xfc,
-	0xc7, 0x80, 0x93, 0x9d, 0x5a, 0x82, 0x7e, 0x5f, 0x53, 0x2d, 0xf1, 0x27, 0xe8, 0x4c, 0x49, 0xde,
-	0x95, 0xa9, 0xa9, 0x0d, 0xf4, 0xd1, 0xa7, 0xaf, 0x46, 0xe3, 0xbd, 0xba, 0xe3, 0x47, 0xdc, 0x71,
-	0xf3, 0xbb, 0xe5, 0x8b, 0xe6, 0x1c, 0x32, 0x30, 0xe6, 0x55, 0x6e, 0xea, 0x03, 0x7d, 0xd4, 0x17,
-	0x2a, 0xc4, 0x1f, 0xa1, 0x73, 0x47, 0x49, 0x4a, 0x95, 0x69, 0x0c, 0x8c, 0x11, 0xbc, 0xfa, 0xea,
-	0x23, 0x3d, 0xaf, 0x36, 0x44, 0xd1, 0x1c, 0xc0, 0x17, 0xd0, 0x9d, 0x25, 0xf7, 0x79, 0x99, 0xa4,
-	0x66, 0x67, 0xa0, 0x8d, 0x8e, 0x2f, 0xf5, 0x9e, 0x26, 0x76, 0x10, 0x8e, 0xe1, 0x64, 0x52, 0xe6,
-	0x79, 0xf9, 0x87, 0xa0, 0x34, 0xab, 0x68, 0x21, 0x6b, 0xb3, 0x3b, 0xd0, 0x46, 0xbd, 0x8b, 0x96,
-	0xac, 0xd6, 0x24, 0x1e, 0x17, 0xf1, 0x39, 0xf4, 0x1c, 0x4a, 0xd2, 0x3c, 0x2b, 0xc8, 0xec, 0x0d,
-	0xb4, 0x91, 0x26, 0xf6, 0x39, 0xfe, 0x0c, 0x5f, 0x4c, 0xd7, 0xb5, 0xbc, 0x49, 0xf2, 0x2c, 0x4d,
-	0x24, 0xa9, 0xed, 0xa1, 0xca, 0xa6, 0x4a, 0x66, 0xb7, 0xd9, 0x22, 0x91, 0x64, 0xf6, 0xdf, 0xeb,
-	0xfc, 0x71, 0xea, 0xf3, 0x97, 0xd0, 0xd9, 0xfe, 0x0f, 0x25, 0xc6, 0x35, 0xdd, 0x9b, 0xad, 0xad,
-	0x18, 0xd7, 0x74, 0x8f, 0xa7, 0xd0, 0xbe, 0x49, 0xf2, 0x35, 0x99, 0xed, 0x0d, 0xb6, 0x4d, 0x86,
-	0x1e, 0x3c, 0x79, 0xa0, 0x26, 0x76, 0xc1, 0x78, 0xcd, 0x23, 0xa6, 0x61, 0x0f, 0x5a, 0xb3, 0x20,
-	0x8c, 0x98, 0xae, 0xa2, 0x2b, 0x6e, 0x39, 0xcc, 0x50, 0xc5, 0xd9, 0x3c, 0x62, 0x2d, 0xb5, 0x2e,
-	0x0e, 0xf7, 0x78, 0xc4, 0x59, 0x1b, 0xfb, 0xd0, 0x9e, 0x59, 0x91, 0x7d, 0xc5, 0x3a, 0xc3, 0x7f,
-	0x0d, 0x60, 0xef, 0x84, 0xad, 0x57, 0x65, 0x51, 0x13, 0x9a, 0xd0, 0xb5, 0xcb, 0x42, 0x52, 0x21,
-	0x4d, 0x4d, 0x49, 0x29, 0x76, 0x29, 0x7e, 0x09, 0x10, 0xca, 0x44, 0xae, 0x6b, 0xf5, 0x71, 0x6c,
-	0x8c, 0x6b, 0x8b, 0xf7, 0x10, 0xbc, 0x78, 0xe4, 0xdf, 0xf0, 0xa0, 0x7f, 0xdb, 0x6b, 0x1e, 0x1b,
-	0xf8, 0x03, 0x3c, 0x6b, 0xae, 0xf9, 0x25, 0xa9, 0xa3, 0x6a, 0x5d, 0x28, 0x81, 0xb6, 0x66, 0xf6,
-	0x2e, 0xda, 0xb7, 0x49, 0x5e, 0x93, 0x38, 0xc4, 0xc0, 0x6f, 0xe0, 0x29, 0xff, 0x73, 0xfb, 0x02,
-	0x5c, 0xde, 0x4b, 0xaa, 0x43, 0x35, 0xb8, 0x72, 0xd7, 0x10, 0x1f, 0x16, 0xf0, 0x7b, 0x38, 0x7b,
-	0x00, 0x0a, 0x5a, 0x50, 0xf6, 0x96, 0xd2, 0x8d, 0xcd, 0x86, 0x38, 0x5c, 0x54, 0xfb, 0x30, 0xc9,
-	0x8a, 0x24, 0x57, 0xfb, 0xaa, 0xec, 0xed, 0x8b, 0x7d, 0x8e, 0xdf, 0x01, 0x5a, 0xab, 0xcc, 0x5e,
-	0xad, 0xa7, 0x59, 0x9e, 0x67, 0x35, 0x2d, 0xca, 0x22, 0xad, 0x4d, 0x50, 0xed, 0x2e, 0xb4, 0x97,
-	0xe2, 0x40, 0x11, 0xbf, 0x86, 0x63, 0x6b, 0x95, 0xbd, 0x9b, 0xf6, 0x68, 0x47, 0x7e, 0x00, 0xe3,
-	0xb7, 0xc0, 0x76, 0xf9, 0x7e, 0xcc, 0xe3, 0x1d, 0xf5, 0x83, 0xd2, 0xff, 0x5f, 0xa6, 0x4b, 0xf8,
-	0xad, 0xb7, 0x7b, 0x2a, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x9f, 0x6d, 0x24, 0x63, 0x05,
-	0x00, 0x00,
+var File_urlfetch_service_proto protoreflect.FileDescriptor
+
+var file_urlfetch_service_proto_rawDesc = []byte{
+	0x0a, 0x16, 0x75, 0x72, 0x6c, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69,
+	0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x22, 0xab, 0x02, 0x0a, 0x14, 0x55, 0x52, 0x4c, 0x46, 0x65, 0x74, 0x63, 0x68,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x92, 0x02, 0x0a,
+	0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b,
+	0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x55, 0x52,
+	0x4c, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x45, 0x54, 0x43, 0x48, 0x5f, 0x45, 0x52, 0x52,
+	0x4f, 0x52, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
+	0x49, 0x45, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x52,
+	0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x41, 0x52, 0x47,
+	0x45, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x49, 0x4e, 0x45, 0x5f,
+	0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x53,
+	0x4c, 0x5f, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x52,
+	0x52, 0x4f, 0x52, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x4e, 0x53, 0x5f, 0x45, 0x52, 0x52,
+	0x4f, 0x52, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x08,
+	0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x54, 0x52, 0x41,
+	0x4e, 0x53, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x09, 0x12, 0x16,
+	0x0a, 0x12, 0x54, 0x4f, 0x4f, 0x5f, 0x4d, 0x41, 0x4e, 0x59, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52,
+	0x45, 0x43, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52,
+	0x4d, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x59, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x43,
+	0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
+	0x0c, 0x22, 0xbf, 0x04, 0x0a, 0x0f, 0x55, 0x52, 0x4c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x55, 0x52, 0x4c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52,
+	0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x06, 0x48, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x55, 0x52, 0x4c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
+	0x52, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c,
+	0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x08, 0x01, 0x48, 0x00, 0x52,
+	0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0f, 0x46,
+	0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65,
+	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x44, 0x65,
+	0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x08,
+	0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1d, 0x4d,
+	0x75, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65,
+	0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x03, 0x52, 0x1d, 0x4d, 0x75, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
+	0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x34, 0x0a, 0x0a, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x56, 0x0a, 0x0d,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x08, 0x0a,
+	0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x54, 0x10, 0x01,
+	0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x53, 0x54, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x45,
+	0x41, 0x44, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x55, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a,
+	0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x41, 0x54,
+	0x43, 0x48, 0x10, 0x06, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x42, 0x12, 0x0a, 0x10, 0x5f, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x64, 0x69, 0x72,
+	0x65, 0x63, 0x74, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e,
+	0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x4d, 0x75, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+	0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
+	0x61, 0x74, 0x65, 0x22, 0xba, 0x05, 0x0a, 0x10, 0x55, 0x52, 0x4c, 0x46, 0x65, 0x74, 0x63, 0x68,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74,
+	0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x43, 0x6f, 0x6e,
+	0x74, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x74, 0x61,
+	0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65,
+	0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x55, 0x52, 0x4c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52,
+	0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x65,
+	0x6e, 0x74, 0x57, 0x61, 0x73, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06,
+	0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x57,
+	0x61, 0x73, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31,
+	0x0a, 0x11, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53,
+	0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x11, 0x45, 0x78, 0x74,
+	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01,
+	0x01, 0x12, 0x39, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74,
+	0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03,
+	0x48, 0x03, 0x52, 0x15, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65,
+	0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08,
+	0x46, 0x69, 0x6e, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04,
+	0x52, 0x08, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a,
+	0x12, 0x41, 0x70, 0x69, 0x43, 0x70, 0x75, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f,
+	0x6e, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x12, 0x41, 0x70, 0x69,
+	0x43, 0x70, 0x75, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x41, 0x70, 0x69, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65,
+	0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x48, 0x06, 0x52, 0x0c, 0x41, 0x70, 0x69, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x10, 0x41,
+	0x70, 0x69, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18,
+	0x0c, 0x20, 0x01, 0x28, 0x03, 0x48, 0x07, 0x52, 0x10, 0x41, 0x70, 0x69, 0x42, 0x79, 0x74, 0x65,
+	0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x1a, 0x34, 0x0a, 0x0a,
+	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65,
+	0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x16,
+	0x0a, 0x14, 0x5f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x57, 0x61, 0x73, 0x54, 0x72, 0x75,
+	0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x45, 0x78, 0x74, 0x65, 0x72,
+	0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16,
+	0x5f, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x65,
+	0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x46, 0x69, 0x6e, 0x61, 0x6c,
+	0x55, 0x72, 0x6c, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x41, 0x70, 0x69, 0x43, 0x70, 0x75, 0x4d, 0x69,
+	0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x41,
+	0x70, 0x69, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f,
+	0x41, 0x70, 0x69, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64,
+	0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
+	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f,
+	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x75, 0x72, 0x6c, 0x66, 0x65, 0x74, 0x63,
+	0x68, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_urlfetch_service_proto_rawDescOnce sync.Once
+	file_urlfetch_service_proto_rawDescData = file_urlfetch_service_proto_rawDesc
+)
+
+func file_urlfetch_service_proto_rawDescGZIP() []byte {
+	file_urlfetch_service_proto_rawDescOnce.Do(func() {
+		file_urlfetch_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_urlfetch_service_proto_rawDescData)
+	})
+	return file_urlfetch_service_proto_rawDescData
+}
+
+var file_urlfetch_service_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_urlfetch_service_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
+var file_urlfetch_service_proto_goTypes = []interface{}{
+	(URLFetchServiceError_ErrorCode)(0), // 0: appengine.URLFetchServiceError.ErrorCode
+	(URLFetchRequest_RequestMethod)(0),  // 1: appengine.URLFetchRequest.RequestMethod
+	(*URLFetchServiceError)(nil),        // 2: appengine.URLFetchServiceError
+	(*URLFetchRequest)(nil),             // 3: appengine.URLFetchRequest
+	(*URLFetchResponse)(nil),            // 4: appengine.URLFetchResponse
+	(*URLFetchRequest_HeaderType)(nil),  // 5: appengine.URLFetchRequest.HeaderType
+	(*URLFetchResponse_HeaderType)(nil), // 6: appengine.URLFetchResponse.HeaderType
+}
+var file_urlfetch_service_proto_depIdxs = []int32{
+	1, // 0: appengine.URLFetchRequest.Method:type_name -> appengine.URLFetchRequest.RequestMethod
+	5, // 1: appengine.URLFetchRequest.Header:type_name -> appengine.URLFetchRequest.HeaderType
+	6, // 2: appengine.URLFetchResponse.Header:type_name -> appengine.URLFetchResponse.HeaderType
+	3, // [3:3] is the sub-list for method output_type
+	3, // [3:3] is the sub-list for method input_type
+	3, // [3:3] is the sub-list for extension type_name
+	3, // [3:3] is the sub-list for extension extendee
+	0, // [0:3] is the sub-list for field type_name
+}
+
+func init() { file_urlfetch_service_proto_init() }
+func file_urlfetch_service_proto_init() {
+	if File_urlfetch_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_urlfetch_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*URLFetchServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_urlfetch_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*URLFetchRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_urlfetch_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*URLFetchResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_urlfetch_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*URLFetchRequest_HeaderType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_urlfetch_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*URLFetchResponse_HeaderType); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_urlfetch_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_urlfetch_service_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_urlfetch_service_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   5,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_urlfetch_service_proto_goTypes,
+		DependencyIndexes: file_urlfetch_service_proto_depIdxs,
+		EnumInfos:         file_urlfetch_service_proto_enumTypes,
+		MessageInfos:      file_urlfetch_service_proto_msgTypes,
+	}.Build()
+	File_urlfetch_service_proto = out.File
+	file_urlfetch_service_proto_rawDesc = nil
+	file_urlfetch_service_proto_goTypes = nil
+	file_urlfetch_service_proto_depIdxs = nil
 }
diff --git a/internal/urlfetch/urlfetch_service.proto b/internal/urlfetch/urlfetch_service.proto
index f695edf6..0a05ef04 100644
--- a/internal/urlfetch/urlfetch_service.proto
+++ b/internal/urlfetch/urlfetch_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "urlfetch";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/urlfetch";
 
 package appengine;
 
@@ -23,6 +23,7 @@ message URLFetchServiceError {
 
 message URLFetchRequest {
   enum RequestMethod {
+    NONE = 0;
     GET = 1;
     POST = 2;
     HEAD = 3;
@@ -30,35 +31,37 @@ message URLFetchRequest {
     DELETE = 5;
     PATCH = 6;
   }
-  required RequestMethod Method = 1;
-  required string Url = 2;
-  repeated group Header = 3 {
-    required string Key = 4;
-    required string Value = 5;
+  RequestMethod Method = 1;
+  string Url = 2;
+  repeated HeaderType Header = 3;
+  message HeaderType {
+    string Key = 4;
+    string Value = 5;
   }
   optional bytes Payload = 6 [ctype=CORD];
 
-  optional bool FollowRedirects = 7 [default=true];
+  optional bool FollowRedirects = 7 ;
 
   optional double Deadline = 8;
 
-  optional bool MustValidateServerCertificate = 9 [default=true];
+  optional bool MustValidateServerCertificate = 9 ;
 }
 
 message URLFetchResponse {
   optional bytes Content = 1;
-  required int32 StatusCode = 2;
-  repeated group Header = 3 {
-    required string Key = 4;
-    required string Value = 5;
+  int32 StatusCode = 2;
+  repeated HeaderType Header = 3;
+  message HeaderType {
+    string Key = 4;
+    string Value = 5;
   }
-  optional bool ContentWasTruncated = 6 [default=false];
+  optional bool ContentWasTruncated = 6 ;
   optional int64 ExternalBytesSent = 7;
   optional int64 ExternalBytesReceived = 8;
 
   optional string FinalUrl = 9;
 
-  optional int64 ApiCpuMilliseconds = 10 [default=0];
-  optional int64 ApiBytesSent = 11 [default=0];
-  optional int64 ApiBytesReceived = 12 [default=0];
+  optional int64 ApiCpuMilliseconds = 10 ;
+  optional int64 ApiBytesSent = 11 ;
+  optional int64 ApiBytesReceived = 12 ;
 }
diff --git a/internal/user/user_service.pb.go b/internal/user/user_service.pb.go
index c32f7268..26f502fb 100644
--- a/internal/user/user_service.pb.go
+++ b/internal/user/user_service.pb.go
@@ -1,22 +1,24 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/user/user_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: user_service.proto
 
 package user
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 UserServiceError_ErrorCode int32
 
@@ -29,503 +31,786 @@ const (
 	UserServiceError_OAUTH_ERROR           UserServiceError_ErrorCode = 5
 )
 
-var UserServiceError_ErrorCode_name = map[int32]string{
-	0: "OK",
-	1: "REDIRECT_URL_TOO_LONG",
-	2: "NOT_ALLOWED",
-	3: "OAUTH_INVALID_TOKEN",
-	4: "OAUTH_INVALID_REQUEST",
-	5: "OAUTH_ERROR",
-}
-var UserServiceError_ErrorCode_value = map[string]int32{
-	"OK":                    0,
-	"REDIRECT_URL_TOO_LONG": 1,
-	"NOT_ALLOWED":           2,
-	"OAUTH_INVALID_TOKEN":   3,
-	"OAUTH_INVALID_REQUEST": 4,
-	"OAUTH_ERROR":           5,
-}
+// Enum value maps for UserServiceError_ErrorCode.
+var (
+	UserServiceError_ErrorCode_name = map[int32]string{
+		0: "OK",
+		1: "REDIRECT_URL_TOO_LONG",
+		2: "NOT_ALLOWED",
+		3: "OAUTH_INVALID_TOKEN",
+		4: "OAUTH_INVALID_REQUEST",
+		5: "OAUTH_ERROR",
+	}
+	UserServiceError_ErrorCode_value = map[string]int32{
+		"OK":                    0,
+		"REDIRECT_URL_TOO_LONG": 1,
+		"NOT_ALLOWED":           2,
+		"OAUTH_INVALID_TOKEN":   3,
+		"OAUTH_INVALID_REQUEST": 4,
+		"OAUTH_ERROR":           5,
+	}
+)
 
 func (x UserServiceError_ErrorCode) Enum() *UserServiceError_ErrorCode {
 	p := new(UserServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x UserServiceError_ErrorCode) String() string {
-	return proto.EnumName(UserServiceError_ErrorCode_name, int32(x))
-}
-func (x *UserServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(UserServiceError_ErrorCode_value, data, "UserServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = UserServiceError_ErrorCode(value)
-	return nil
-}
-func (UserServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_user_service_faa685423dd20b0a, []int{0, 0}
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type UserServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (UserServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_user_service_proto_enumTypes[0].Descriptor()
 }
 
-func (m *UserServiceError) Reset()         { *m = UserServiceError{} }
-func (m *UserServiceError) String() string { return proto.CompactTextString(m) }
-func (*UserServiceError) ProtoMessage()    {}
-func (*UserServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_user_service_faa685423dd20b0a, []int{0}
+func (UserServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_user_service_proto_enumTypes[0]
 }
-func (m *UserServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UserServiceError.Unmarshal(m, b)
+
+func (x UserServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *UserServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UserServiceError.Marshal(b, m, deterministic)
+
+// Deprecated: Use UserServiceError_ErrorCode.Descriptor instead.
+func (UserServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
+	return file_user_service_proto_rawDescGZIP(), []int{0, 0}
 }
-func (dst *UserServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UserServiceError.Merge(dst, src)
+
+type UserServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *UserServiceError) XXX_Size() int {
-	return xxx_messageInfo_UserServiceError.Size(m)
+
+func (x *UserServiceError) Reset() {
+	*x = UserServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_user_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *UserServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_UserServiceError.DiscardUnknown(m)
+
+func (x *UserServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_UserServiceError proto.InternalMessageInfo
+func (*UserServiceError) ProtoMessage() {}
 
-type CreateLoginURLRequest struct {
-	DestinationUrl       *string  `protobuf:"bytes,1,req,name=destination_url,json=destinationUrl" json:"destination_url,omitempty"`
-	AuthDomain           *string  `protobuf:"bytes,2,opt,name=auth_domain,json=authDomain" json:"auth_domain,omitempty"`
-	FederatedIdentity    *string  `protobuf:"bytes,3,opt,name=federated_identity,json=federatedIdentity,def=" json:"federated_identity,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *UserServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_user_service_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)
 }
 
-func (m *CreateLoginURLRequest) Reset()         { *m = CreateLoginURLRequest{} }
-func (m *CreateLoginURLRequest) String() string { return proto.CompactTextString(m) }
-func (*CreateLoginURLRequest) ProtoMessage()    {}
-func (*CreateLoginURLRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_user_service_faa685423dd20b0a, []int{1}
-}
-func (m *CreateLoginURLRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateLoginURLRequest.Unmarshal(m, b)
+// Deprecated: Use UserServiceError.ProtoReflect.Descriptor instead.
+func (*UserServiceError) Descriptor() ([]byte, []int) {
+	return file_user_service_proto_rawDescGZIP(), []int{0}
 }
-func (m *CreateLoginURLRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateLoginURLRequest.Marshal(b, m, deterministic)
+
+type CreateLoginURLRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	DestinationUrl    string  `protobuf:"bytes,1,opt,name=destination_url,json=destinationUrl,proto3" json:"destination_url,omitempty"`
+	AuthDomain        *string `protobuf:"bytes,2,opt,name=auth_domain,json=authDomain,proto3,oneof" json:"auth_domain,omitempty"`
+	FederatedIdentity *string `protobuf:"bytes,3,opt,name=federated_identity,json=federatedIdentity,proto3,oneof" json:"federated_identity,omitempty"`
 }
-func (dst *CreateLoginURLRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateLoginURLRequest.Merge(dst, src)
+
+func (x *CreateLoginURLRequest) Reset() {
+	*x = CreateLoginURLRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_user_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateLoginURLRequest) XXX_Size() int {
-	return xxx_messageInfo_CreateLoginURLRequest.Size(m)
+
+func (x *CreateLoginURLRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateLoginURLRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateLoginURLRequest.DiscardUnknown(m)
+
+func (*CreateLoginURLRequest) ProtoMessage() {}
+
+func (x *CreateLoginURLRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_user_service_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)
 }
 
-var xxx_messageInfo_CreateLoginURLRequest proto.InternalMessageInfo
+// Deprecated: Use CreateLoginURLRequest.ProtoReflect.Descriptor instead.
+func (*CreateLoginURLRequest) Descriptor() ([]byte, []int) {
+	return file_user_service_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *CreateLoginURLRequest) GetDestinationUrl() string {
-	if m != nil && m.DestinationUrl != nil {
-		return *m.DestinationUrl
+func (x *CreateLoginURLRequest) GetDestinationUrl() string {
+	if x != nil {
+		return x.DestinationUrl
 	}
 	return ""
 }
 
-func (m *CreateLoginURLRequest) GetAuthDomain() string {
-	if m != nil && m.AuthDomain != nil {
-		return *m.AuthDomain
+func (x *CreateLoginURLRequest) GetAuthDomain() string {
+	if x != nil && x.AuthDomain != nil {
+		return *x.AuthDomain
 	}
 	return ""
 }
 
-func (m *CreateLoginURLRequest) GetFederatedIdentity() string {
-	if m != nil && m.FederatedIdentity != nil {
-		return *m.FederatedIdentity
+func (x *CreateLoginURLRequest) GetFederatedIdentity() string {
+	if x != nil && x.FederatedIdentity != nil {
+		return *x.FederatedIdentity
 	}
 	return ""
 }
 
 type CreateLoginURLResponse struct {
-	LoginUrl             *string  `protobuf:"bytes,1,req,name=login_url,json=loginUrl" json:"login_url,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CreateLoginURLResponse) Reset()         { *m = CreateLoginURLResponse{} }
-func (m *CreateLoginURLResponse) String() string { return proto.CompactTextString(m) }
-func (*CreateLoginURLResponse) ProtoMessage()    {}
-func (*CreateLoginURLResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_user_service_faa685423dd20b0a, []int{2}
-}
-func (m *CreateLoginURLResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateLoginURLResponse.Unmarshal(m, b)
+	LoginUrl string `protobuf:"bytes,1,opt,name=login_url,json=loginUrl,proto3" json:"login_url,omitempty"`
 }
-func (m *CreateLoginURLResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateLoginURLResponse.Marshal(b, m, deterministic)
-}
-func (dst *CreateLoginURLResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateLoginURLResponse.Merge(dst, src)
+
+func (x *CreateLoginURLResponse) Reset() {
+	*x = CreateLoginURLResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_user_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateLoginURLResponse) XXX_Size() int {
-	return xxx_messageInfo_CreateLoginURLResponse.Size(m)
+
+func (x *CreateLoginURLResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateLoginURLResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateLoginURLResponse.DiscardUnknown(m)
+
+func (*CreateLoginURLResponse) ProtoMessage() {}
+
+func (x *CreateLoginURLResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_user_service_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)
 }
 
-var xxx_messageInfo_CreateLoginURLResponse proto.InternalMessageInfo
+// Deprecated: Use CreateLoginURLResponse.ProtoReflect.Descriptor instead.
+func (*CreateLoginURLResponse) Descriptor() ([]byte, []int) {
+	return file_user_service_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *CreateLoginURLResponse) GetLoginUrl() string {
-	if m != nil && m.LoginUrl != nil {
-		return *m.LoginUrl
+func (x *CreateLoginURLResponse) GetLoginUrl() string {
+	if x != nil {
+		return x.LoginUrl
 	}
 	return ""
 }
 
 type CreateLogoutURLRequest struct {
-	DestinationUrl       *string  `protobuf:"bytes,1,req,name=destination_url,json=destinationUrl" json:"destination_url,omitempty"`
-	AuthDomain           *string  `protobuf:"bytes,2,opt,name=auth_domain,json=authDomain" json:"auth_domain,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CreateLogoutURLRequest) Reset()         { *m = CreateLogoutURLRequest{} }
-func (m *CreateLogoutURLRequest) String() string { return proto.CompactTextString(m) }
-func (*CreateLogoutURLRequest) ProtoMessage()    {}
-func (*CreateLogoutURLRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_user_service_faa685423dd20b0a, []int{3}
-}
-func (m *CreateLogoutURLRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateLogoutURLRequest.Unmarshal(m, b)
+	DestinationUrl string  `protobuf:"bytes,1,opt,name=destination_url,json=destinationUrl,proto3" json:"destination_url,omitempty"`
+	AuthDomain     *string `protobuf:"bytes,2,opt,name=auth_domain,json=authDomain,proto3,oneof" json:"auth_domain,omitempty"`
 }
-func (m *CreateLogoutURLRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateLogoutURLRequest.Marshal(b, m, deterministic)
-}
-func (dst *CreateLogoutURLRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateLogoutURLRequest.Merge(dst, src)
+
+func (x *CreateLogoutURLRequest) Reset() {
+	*x = CreateLogoutURLRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_user_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateLogoutURLRequest) XXX_Size() int {
-	return xxx_messageInfo_CreateLogoutURLRequest.Size(m)
+
+func (x *CreateLogoutURLRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateLogoutURLRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateLogoutURLRequest.DiscardUnknown(m)
+
+func (*CreateLogoutURLRequest) ProtoMessage() {}
+
+func (x *CreateLogoutURLRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_user_service_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)
 }
 
-var xxx_messageInfo_CreateLogoutURLRequest proto.InternalMessageInfo
+// Deprecated: Use CreateLogoutURLRequest.ProtoReflect.Descriptor instead.
+func (*CreateLogoutURLRequest) Descriptor() ([]byte, []int) {
+	return file_user_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *CreateLogoutURLRequest) GetDestinationUrl() string {
-	if m != nil && m.DestinationUrl != nil {
-		return *m.DestinationUrl
+func (x *CreateLogoutURLRequest) GetDestinationUrl() string {
+	if x != nil {
+		return x.DestinationUrl
 	}
 	return ""
 }
 
-func (m *CreateLogoutURLRequest) GetAuthDomain() string {
-	if m != nil && m.AuthDomain != nil {
-		return *m.AuthDomain
+func (x *CreateLogoutURLRequest) GetAuthDomain() string {
+	if x != nil && x.AuthDomain != nil {
+		return *x.AuthDomain
 	}
 	return ""
 }
 
 type CreateLogoutURLResponse struct {
-	LogoutUrl            *string  `protobuf:"bytes,1,req,name=logout_url,json=logoutUrl" json:"logout_url,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *CreateLogoutURLResponse) Reset()         { *m = CreateLogoutURLResponse{} }
-func (m *CreateLogoutURLResponse) String() string { return proto.CompactTextString(m) }
-func (*CreateLogoutURLResponse) ProtoMessage()    {}
-func (*CreateLogoutURLResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_user_service_faa685423dd20b0a, []int{4}
-}
-func (m *CreateLogoutURLResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CreateLogoutURLResponse.Unmarshal(m, b)
+	LogoutUrl string `protobuf:"bytes,1,opt,name=logout_url,json=logoutUrl,proto3" json:"logout_url,omitempty"`
 }
-func (m *CreateLogoutURLResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CreateLogoutURLResponse.Marshal(b, m, deterministic)
-}
-func (dst *CreateLogoutURLResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CreateLogoutURLResponse.Merge(dst, src)
+
+func (x *CreateLogoutURLResponse) Reset() {
+	*x = CreateLogoutURLResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_user_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CreateLogoutURLResponse) XXX_Size() int {
-	return xxx_messageInfo_CreateLogoutURLResponse.Size(m)
+
+func (x *CreateLogoutURLResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CreateLogoutURLResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CreateLogoutURLResponse.DiscardUnknown(m)
+
+func (*CreateLogoutURLResponse) ProtoMessage() {}
+
+func (x *CreateLogoutURLResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_user_service_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)
 }
 
-var xxx_messageInfo_CreateLogoutURLResponse proto.InternalMessageInfo
+// Deprecated: Use CreateLogoutURLResponse.ProtoReflect.Descriptor instead.
+func (*CreateLogoutURLResponse) Descriptor() ([]byte, []int) {
+	return file_user_service_proto_rawDescGZIP(), []int{4}
+}
 
-func (m *CreateLogoutURLResponse) GetLogoutUrl() string {
-	if m != nil && m.LogoutUrl != nil {
-		return *m.LogoutUrl
+func (x *CreateLogoutURLResponse) GetLogoutUrl() string {
+	if x != nil {
+		return x.LogoutUrl
 	}
 	return ""
 }
 
 type GetOAuthUserRequest struct {
-	Scope                *string  `protobuf:"bytes,1,opt,name=scope" json:"scope,omitempty"`
-	Scopes               []string `protobuf:"bytes,2,rep,name=scopes" json:"scopes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *GetOAuthUserRequest) Reset()         { *m = GetOAuthUserRequest{} }
-func (m *GetOAuthUserRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOAuthUserRequest) ProtoMessage()    {}
-func (*GetOAuthUserRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_user_service_faa685423dd20b0a, []int{5}
-}
-func (m *GetOAuthUserRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOAuthUserRequest.Unmarshal(m, b)
+	Scope  *string  `protobuf:"bytes,1,opt,name=scope,proto3,oneof" json:"scope,omitempty"`
+	Scopes []string `protobuf:"bytes,2,rep,name=scopes,proto3" json:"scopes,omitempty"`
 }
-func (m *GetOAuthUserRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOAuthUserRequest.Marshal(b, m, deterministic)
-}
-func (dst *GetOAuthUserRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOAuthUserRequest.Merge(dst, src)
+
+func (x *GetOAuthUserRequest) Reset() {
+	*x = GetOAuthUserRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_user_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetOAuthUserRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOAuthUserRequest.Size(m)
+
+func (x *GetOAuthUserRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *GetOAuthUserRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOAuthUserRequest.DiscardUnknown(m)
+
+func (*GetOAuthUserRequest) ProtoMessage() {}
+
+func (x *GetOAuthUserRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_user_service_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)
 }
 
-var xxx_messageInfo_GetOAuthUserRequest proto.InternalMessageInfo
+// Deprecated: Use GetOAuthUserRequest.ProtoReflect.Descriptor instead.
+func (*GetOAuthUserRequest) Descriptor() ([]byte, []int) {
+	return file_user_service_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *GetOAuthUserRequest) GetScope() string {
-	if m != nil && m.Scope != nil {
-		return *m.Scope
+func (x *GetOAuthUserRequest) GetScope() string {
+	if x != nil && x.Scope != nil {
+		return *x.Scope
 	}
 	return ""
 }
 
-func (m *GetOAuthUserRequest) GetScopes() []string {
-	if m != nil {
-		return m.Scopes
+func (x *GetOAuthUserRequest) GetScopes() []string {
+	if x != nil {
+		return x.Scopes
 	}
 	return nil
 }
 
 type GetOAuthUserResponse struct {
-	Email                *string  `protobuf:"bytes,1,req,name=email" json:"email,omitempty"`
-	UserId               *string  `protobuf:"bytes,2,req,name=user_id,json=userId" json:"user_id,omitempty"`
-	AuthDomain           *string  `protobuf:"bytes,3,req,name=auth_domain,json=authDomain" json:"auth_domain,omitempty"`
-	UserOrganization     *string  `protobuf:"bytes,4,opt,name=user_organization,json=userOrganization,def=" json:"user_organization,omitempty"`
-	IsAdmin              *bool    `protobuf:"varint,5,opt,name=is_admin,json=isAdmin,def=0" json:"is_admin,omitempty"`
-	ClientId             *string  `protobuf:"bytes,6,opt,name=client_id,json=clientId,def=" json:"client_id,omitempty"`
-	Scopes               []string `protobuf:"bytes,7,rep,name=scopes" json:"scopes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GetOAuthUserResponse) Reset()         { *m = GetOAuthUserResponse{} }
-func (m *GetOAuthUserResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOAuthUserResponse) ProtoMessage()    {}
-func (*GetOAuthUserResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_user_service_faa685423dd20b0a, []int{6}
-}
-func (m *GetOAuthUserResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOAuthUserResponse.Unmarshal(m, b)
-}
-func (m *GetOAuthUserResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOAuthUserResponse.Marshal(b, m, deterministic)
-}
-func (dst *GetOAuthUserResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOAuthUserResponse.Merge(dst, src)
-}
-func (m *GetOAuthUserResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOAuthUserResponse.Size(m)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Email            string   `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"`
+	UserId           string   `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
+	AuthDomain       string   `protobuf:"bytes,3,opt,name=auth_domain,json=authDomain,proto3" json:"auth_domain,omitempty"`
+	UserOrganization *string  `protobuf:"bytes,4,opt,name=user_organization,json=userOrganization,proto3,oneof" json:"user_organization,omitempty"`
+	IsAdmin          *bool    `protobuf:"varint,5,opt,name=is_admin,json=isAdmin,proto3,oneof" json:"is_admin,omitempty"`
+	ClientId         *string  `protobuf:"bytes,6,opt,name=client_id,json=clientId,proto3,oneof" json:"client_id,omitempty"`
+	Scopes           []string `protobuf:"bytes,7,rep,name=scopes,proto3" json:"scopes,omitempty"`
+}
+
+func (x *GetOAuthUserResponse) Reset() {
+	*x = GetOAuthUserResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_user_service_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *GetOAuthUserResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOAuthUserResponse.DiscardUnknown(m)
+
+func (x *GetOAuthUserResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_GetOAuthUserResponse proto.InternalMessageInfo
+func (*GetOAuthUserResponse) ProtoMessage() {}
 
-const Default_GetOAuthUserResponse_IsAdmin bool = false
+func (x *GetOAuthUserResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_user_service_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 GetOAuthUserResponse.ProtoReflect.Descriptor instead.
+func (*GetOAuthUserResponse) Descriptor() ([]byte, []int) {
+	return file_user_service_proto_rawDescGZIP(), []int{6}
+}
 
-func (m *GetOAuthUserResponse) GetEmail() string {
-	if m != nil && m.Email != nil {
-		return *m.Email
+func (x *GetOAuthUserResponse) GetEmail() string {
+	if x != nil {
+		return x.Email
 	}
 	return ""
 }
 
-func (m *GetOAuthUserResponse) GetUserId() string {
-	if m != nil && m.UserId != nil {
-		return *m.UserId
+func (x *GetOAuthUserResponse) GetUserId() string {
+	if x != nil {
+		return x.UserId
 	}
 	return ""
 }
 
-func (m *GetOAuthUserResponse) GetAuthDomain() string {
-	if m != nil && m.AuthDomain != nil {
-		return *m.AuthDomain
+func (x *GetOAuthUserResponse) GetAuthDomain() string {
+	if x != nil {
+		return x.AuthDomain
 	}
 	return ""
 }
 
-func (m *GetOAuthUserResponse) GetUserOrganization() string {
-	if m != nil && m.UserOrganization != nil {
-		return *m.UserOrganization
+func (x *GetOAuthUserResponse) GetUserOrganization() string {
+	if x != nil && x.UserOrganization != nil {
+		return *x.UserOrganization
 	}
 	return ""
 }
 
-func (m *GetOAuthUserResponse) GetIsAdmin() bool {
-	if m != nil && m.IsAdmin != nil {
-		return *m.IsAdmin
+func (x *GetOAuthUserResponse) GetIsAdmin() bool {
+	if x != nil && x.IsAdmin != nil {
+		return *x.IsAdmin
 	}
-	return Default_GetOAuthUserResponse_IsAdmin
+	return false
 }
 
-func (m *GetOAuthUserResponse) GetClientId() string {
-	if m != nil && m.ClientId != nil {
-		return *m.ClientId
+func (x *GetOAuthUserResponse) GetClientId() string {
+	if x != nil && x.ClientId != nil {
+		return *x.ClientId
 	}
 	return ""
 }
 
-func (m *GetOAuthUserResponse) GetScopes() []string {
-	if m != nil {
-		return m.Scopes
+func (x *GetOAuthUserResponse) GetScopes() []string {
+	if x != nil {
+		return x.Scopes
 	}
 	return nil
 }
 
 type CheckOAuthSignatureRequest struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *CheckOAuthSignatureRequest) Reset()         { *m = CheckOAuthSignatureRequest{} }
-func (m *CheckOAuthSignatureRequest) String() string { return proto.CompactTextString(m) }
-func (*CheckOAuthSignatureRequest) ProtoMessage()    {}
-func (*CheckOAuthSignatureRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_user_service_faa685423dd20b0a, []int{7}
-}
-func (m *CheckOAuthSignatureRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CheckOAuthSignatureRequest.Unmarshal(m, b)
-}
-func (m *CheckOAuthSignatureRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CheckOAuthSignatureRequest.Marshal(b, m, deterministic)
-}
-func (dst *CheckOAuthSignatureRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CheckOAuthSignatureRequest.Merge(dst, src)
-}
-func (m *CheckOAuthSignatureRequest) XXX_Size() int {
-	return xxx_messageInfo_CheckOAuthSignatureRequest.Size(m)
+func (x *CheckOAuthSignatureRequest) Reset() {
+	*x = CheckOAuthSignatureRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_user_service_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CheckOAuthSignatureRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CheckOAuthSignatureRequest.DiscardUnknown(m)
+
+func (x *CheckOAuthSignatureRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_CheckOAuthSignatureRequest proto.InternalMessageInfo
+func (*CheckOAuthSignatureRequest) ProtoMessage() {}
 
-type CheckOAuthSignatureResponse struct {
-	OauthConsumerKey     *string  `protobuf:"bytes,1,req,name=oauth_consumer_key,json=oauthConsumerKey" json:"oauth_consumer_key,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *CheckOAuthSignatureRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_user_service_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)
 }
 
-func (m *CheckOAuthSignatureResponse) Reset()         { *m = CheckOAuthSignatureResponse{} }
-func (m *CheckOAuthSignatureResponse) String() string { return proto.CompactTextString(m) }
-func (*CheckOAuthSignatureResponse) ProtoMessage()    {}
-func (*CheckOAuthSignatureResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_user_service_faa685423dd20b0a, []int{8}
-}
-func (m *CheckOAuthSignatureResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CheckOAuthSignatureResponse.Unmarshal(m, b)
+// Deprecated: Use CheckOAuthSignatureRequest.ProtoReflect.Descriptor instead.
+func (*CheckOAuthSignatureRequest) Descriptor() ([]byte, []int) {
+	return file_user_service_proto_rawDescGZIP(), []int{7}
 }
-func (m *CheckOAuthSignatureResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CheckOAuthSignatureResponse.Marshal(b, m, deterministic)
+
+type CheckOAuthSignatureResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	OauthConsumerKey string `protobuf:"bytes,1,opt,name=oauth_consumer_key,json=oauthConsumerKey,proto3" json:"oauth_consumer_key,omitempty"`
 }
-func (dst *CheckOAuthSignatureResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CheckOAuthSignatureResponse.Merge(dst, src)
+
+func (x *CheckOAuthSignatureResponse) Reset() {
+	*x = CheckOAuthSignatureResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_user_service_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *CheckOAuthSignatureResponse) XXX_Size() int {
-	return xxx_messageInfo_CheckOAuthSignatureResponse.Size(m)
+
+func (x *CheckOAuthSignatureResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *CheckOAuthSignatureResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CheckOAuthSignatureResponse.DiscardUnknown(m)
+
+func (*CheckOAuthSignatureResponse) ProtoMessage() {}
+
+func (x *CheckOAuthSignatureResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_user_service_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)
 }
 
-var xxx_messageInfo_CheckOAuthSignatureResponse proto.InternalMessageInfo
+// Deprecated: Use CheckOAuthSignatureResponse.ProtoReflect.Descriptor instead.
+func (*CheckOAuthSignatureResponse) Descriptor() ([]byte, []int) {
+	return file_user_service_proto_rawDescGZIP(), []int{8}
+}
 
-func (m *CheckOAuthSignatureResponse) GetOauthConsumerKey() string {
-	if m != nil && m.OauthConsumerKey != nil {
-		return *m.OauthConsumerKey
+func (x *CheckOAuthSignatureResponse) GetOauthConsumerKey() string {
+	if x != nil {
+		return x.OauthConsumerKey
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*UserServiceError)(nil), "appengine.UserServiceError")
-	proto.RegisterType((*CreateLoginURLRequest)(nil), "appengine.CreateLoginURLRequest")
-	proto.RegisterType((*CreateLoginURLResponse)(nil), "appengine.CreateLoginURLResponse")
-	proto.RegisterType((*CreateLogoutURLRequest)(nil), "appengine.CreateLogoutURLRequest")
-	proto.RegisterType((*CreateLogoutURLResponse)(nil), "appengine.CreateLogoutURLResponse")
-	proto.RegisterType((*GetOAuthUserRequest)(nil), "appengine.GetOAuthUserRequest")
-	proto.RegisterType((*GetOAuthUserResponse)(nil), "appengine.GetOAuthUserResponse")
-	proto.RegisterType((*CheckOAuthSignatureRequest)(nil), "appengine.CheckOAuthSignatureRequest")
-	proto.RegisterType((*CheckOAuthSignatureResponse)(nil), "appengine.CheckOAuthSignatureResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/user/user_service.proto", fileDescriptor_user_service_faa685423dd20b0a)
-}
-
-var fileDescriptor_user_service_faa685423dd20b0a = []byte{
-	// 573 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x52, 0x4d, 0x6f, 0xdb, 0x38,
-	0x10, 0x8d, 0xec, 0xd8, 0xb1, 0x26, 0xc0, 0x46, 0x61, 0xbe, 0xb4, 0x9b, 0x0d, 0xd6, 0xd0, 0x65,
-	0x7d, 0x68, 0xe3, 0x53, 0x81, 0x22, 0xe8, 0xc5, 0xb5, 0x85, 0xd4, 0xb0, 0x60, 0xa1, 0x8c, 0xd5,
-	0x02, 0xbd, 0x08, 0xac, 0x35, 0x51, 0x88, 0xc8, 0xa4, 0x4b, 0x52, 0x05, 0xd2, 0x73, 0x7f, 0x41,
-	0x6f, 0xfd, 0x93, 0xfd, 0x0d, 0x85, 0x68, 0x25, 0x50, 0xd2, 0x5e, 0x7b, 0x11, 0x34, 0xef, 0x0d,
-	0xdf, 0xbc, 0x37, 0x24, 0xbc, 0xca, 0xa5, 0xcc, 0x0b, 0x3c, 0xcf, 0x65, 0xc1, 0x44, 0x7e, 0x2e,
-	0x55, 0x3e, 0x64, 0xeb, 0x35, 0x8a, 0x9c, 0x0b, 0x1c, 0x72, 0x61, 0x50, 0x09, 0x56, 0x0c, 0x4b,
-	0x8d, 0xca, 0x7e, 0x52, 0x8d, 0xea, 0x33, 0x5f, 0xe2, 0xf9, 0x5a, 0x49, 0x23, 0x89, 0xfb, 0xd0,
-	0x1b, 0x7c, 0x77, 0xc0, 0x4b, 0x34, 0xaa, 0xab, 0x4d, 0x43, 0xa8, 0x94, 0x54, 0xc1, 0x57, 0x07,
-	0x5c, 0xfb, 0x37, 0x96, 0x19, 0x92, 0x2e, 0xb4, 0xe2, 0x99, 0xb7, 0x45, 0xfe, 0x86, 0x23, 0x1a,
-	0x4e, 0xa6, 0x34, 0x1c, 0x2f, 0xd2, 0x84, 0x46, 0xe9, 0x22, 0x8e, 0xd3, 0x28, 0x9e, 0x5f, 0x7a,
-	0x0e, 0xd9, 0x83, 0xdd, 0x79, 0xbc, 0x48, 0x47, 0x51, 0x14, 0xbf, 0x0f, 0x27, 0x5e, 0x8b, 0x9c,
-	0xc0, 0x41, 0x3c, 0x4a, 0x16, 0x6f, 0xd2, 0xe9, 0xfc, 0xdd, 0x28, 0x9a, 0x4e, 0xd2, 0x45, 0x3c,
-	0x0b, 0xe7, 0x5e, 0xbb, 0x12, 0x79, 0x4c, 0xd0, 0xf0, 0x6d, 0x12, 0x5e, 0x2d, 0xbc, 0xed, 0x4a,
-	0x64, 0x43, 0x85, 0x94, 0xc6, 0xd4, 0xeb, 0x04, 0xdf, 0x1c, 0x38, 0x1a, 0x2b, 0x64, 0x06, 0x23,
-	0x99, 0x73, 0x91, 0xd0, 0x88, 0xe2, 0xa7, 0x12, 0xb5, 0x21, 0xff, 0xc3, 0x5e, 0x86, 0xda, 0x70,
-	0xc1, 0x0c, 0x97, 0x22, 0x2d, 0x55, 0xe1, 0x3b, 0xfd, 0xd6, 0xc0, 0xa5, 0x7f, 0x35, 0xe0, 0x44,
-	0x15, 0xe4, 0x3f, 0xd8, 0x65, 0xa5, 0xb9, 0x49, 0x33, 0xb9, 0x62, 0x5c, 0xf8, 0xad, 0xbe, 0x33,
-	0x70, 0x29, 0x54, 0xd0, 0xc4, 0x22, 0x64, 0x08, 0xe4, 0x1a, 0x33, 0x54, 0xcc, 0x60, 0x96, 0xf2,
-	0x0c, 0x85, 0xe1, 0xe6, 0xce, 0x6f, 0x57, 0x7d, 0x17, 0x5b, 0x74, 0xff, 0x81, 0x9b, 0xd6, 0x54,
-	0xf0, 0x02, 0x8e, 0x9f, 0x7a, 0xd2, 0x6b, 0x29, 0x34, 0x92, 0x53, 0x70, 0x8b, 0x0a, 0x6b, 0xd8,
-	0xe9, 0x59, 0x20, 0x51, 0x45, 0xf0, 0xb1, 0x71, 0x4c, 0x96, 0xe6, 0x4f, 0x64, 0x09, 0x5e, 0xc2,
-	0xc9, 0x2f, 0x33, 0x6a, 0x6f, 0x67, 0x00, 0x85, 0x05, 0x1b, 0xfa, 0xee, 0x06, 0xa9, 0xdc, 0x8d,
-	0xe1, 0xe0, 0x12, 0x4d, 0x3c, 0x2a, 0xcd, 0x4d, 0xf5, 0x18, 0xee, 0xad, 0x1d, 0x42, 0x47, 0x2f,
-	0xe5, 0x1a, 0x7d, 0xc7, 0xce, 0xda, 0x14, 0xe4, 0x18, 0xba, 0xf6, 0x47, 0xfb, 0xad, 0x7e, 0x7b,
-	0xe0, 0xd2, 0xba, 0x0a, 0x7e, 0x38, 0x70, 0xf8, 0x58, 0xa5, 0x1e, 0x7e, 0x08, 0x1d, 0x5c, 0x31,
-	0x7e, 0x3f, 0x77, 0x53, 0x90, 0x13, 0xd8, 0xb1, 0x4f, 0x93, 0x67, 0x7e, 0xcb, 0xe2, 0xdd, 0xaa,
-	0x9c, 0x66, 0x4f, 0x73, 0xb6, 0x2d, 0xd9, 0xbc, 0xb3, 0xe7, 0xb0, 0x6f, 0x4f, 0x4a, 0x95, 0x33,
-	0xc1, 0xbf, 0xd8, 0x05, 0xf9, 0xdb, 0xf5, 0x95, 0x79, 0x15, 0x15, 0x37, 0x18, 0xd2, 0x87, 0x1e,
-	0xd7, 0x29, 0xcb, 0x56, 0x5c, 0xf8, 0x9d, 0xbe, 0x33, 0xe8, 0x5d, 0x74, 0xae, 0x59, 0xa1, 0x91,
-	0xee, 0x70, 0x3d, 0xaa, 0x50, 0x72, 0x06, 0xee, 0xb2, 0xe0, 0x28, 0x4c, 0x65, 0xa6, 0x5b, 0x0b,
-	0xf5, 0x36, 0xd0, 0x34, 0x6b, 0x04, 0xde, 0x79, 0x14, 0xf8, 0x5f, 0xf8, 0x67, 0x7c, 0x83, 0xcb,
-	0x5b, 0x9b, 0xf8, 0x8a, 0xe7, 0x82, 0x99, 0x52, 0x61, 0xbd, 0xbc, 0x60, 0x06, 0xa7, 0xbf, 0x65,
-	0xeb, 0xa5, 0x3c, 0x03, 0x22, 0x6d, 0xcc, 0xa5, 0x14, 0xba, 0x5c, 0xa1, 0x4a, 0x6f, 0xf1, 0xae,
-	0xde, 0x90, 0x67, 0x99, 0x71, 0x4d, 0xcc, 0xf0, 0xee, 0x75, 0xf7, 0xc3, 0x76, 0x95, 0xeb, 0x67,
-	0x00, 0x00, 0x00, 0xff, 0xff, 0x58, 0x04, 0x53, 0xcc, 0xf8, 0x03, 0x00, 0x00,
+var File_user_service_proto protoreflect.FileDescriptor
+
+var file_user_service_proto_rawDesc = []byte{
+	0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22,
+	0x99, 0x01, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45,
+	0x72, 0x72, 0x6f, 0x72, 0x22, 0x84, 0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f,
+	0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45,
+	0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x55, 0x52, 0x4c, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c,
+	0x4f, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4c, 0x4c,
+	0x4f, 0x57, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x41, 0x55, 0x54, 0x48, 0x5f,
+	0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x03, 0x12,
+	0x19, 0x0a, 0x15, 0x4f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44,
+	0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x41,
+	0x55, 0x54, 0x48, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x22, 0xc1, 0x01, 0x0a, 0x15,
+	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x52, 0x4c, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
+	0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x24,
+	0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69,
+	0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65,
+	0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x01, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65,
+	0x6e, 0x74, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x75, 0x74,
+	0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65, 0x64,
+	0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22,
+	0x35, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x52,
+	0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67,
+	0x69, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f,
+	0x67, 0x69, 0x6e, 0x55, 0x72, 0x6c, 0x22, 0x77, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+	0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+	0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x75, 0x74,
+	0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+	0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x42,
+	0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22,
+	0x38, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55,
+	0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f,
+	0x67, 0x6f, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+	0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x72, 0x6c, 0x22, 0x52, 0x0a, 0x13, 0x47, 0x65, 0x74,
+	0x4f, 0x41, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x19, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x73,
+	0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f,
+	0x70, 0x65, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0xa3, 0x02,
+	0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x17, 0x0a, 0x07,
+	0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75,
+	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64, 0x6f,
+	0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68,
+	0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6f,
+	0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x00, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61,
+	0x64, 0x6d, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x07, 0x69, 0x73,
+	0x41, 0x64, 0x6d, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65,
+	0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x63,
+	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63,
+	0x6f, 0x70, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70,
+	0x65, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6f, 0x72, 0x67, 0x61,
+	0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x73, 0x5f,
+	0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x5f, 0x69, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x41, 0x75, 0x74,
+	0x68, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x22, 0x4b, 0x0a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x53,
+	0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d,
+	0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x61,
+	0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x42, 0x2b,
+	0x5a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x33,
+}
+
+var (
+	file_user_service_proto_rawDescOnce sync.Once
+	file_user_service_proto_rawDescData = file_user_service_proto_rawDesc
+)
+
+func file_user_service_proto_rawDescGZIP() []byte {
+	file_user_service_proto_rawDescOnce.Do(func() {
+		file_user_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_user_service_proto_rawDescData)
+	})
+	return file_user_service_proto_rawDescData
+}
+
+var file_user_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_user_service_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_user_service_proto_goTypes = []interface{}{
+	(UserServiceError_ErrorCode)(0),     // 0: appengine.UserServiceError.ErrorCode
+	(*UserServiceError)(nil),            // 1: appengine.UserServiceError
+	(*CreateLoginURLRequest)(nil),       // 2: appengine.CreateLoginURLRequest
+	(*CreateLoginURLResponse)(nil),      // 3: appengine.CreateLoginURLResponse
+	(*CreateLogoutURLRequest)(nil),      // 4: appengine.CreateLogoutURLRequest
+	(*CreateLogoutURLResponse)(nil),     // 5: appengine.CreateLogoutURLResponse
+	(*GetOAuthUserRequest)(nil),         // 6: appengine.GetOAuthUserRequest
+	(*GetOAuthUserResponse)(nil),        // 7: appengine.GetOAuthUserResponse
+	(*CheckOAuthSignatureRequest)(nil),  // 8: appengine.CheckOAuthSignatureRequest
+	(*CheckOAuthSignatureResponse)(nil), // 9: appengine.CheckOAuthSignatureResponse
+}
+var file_user_service_proto_depIdxs = []int32{
+	0, // [0:0] is the sub-list for method output_type
+	0, // [0:0] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_user_service_proto_init() }
+func file_user_service_proto_init() {
+	if File_user_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_user_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UserServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_user_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateLoginURLRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_user_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateLoginURLResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_user_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateLogoutURLRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_user_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CreateLogoutURLResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_user_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetOAuthUserRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_user_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetOAuthUserResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_user_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CheckOAuthSignatureRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_user_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CheckOAuthSignatureResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_user_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_user_service_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	file_user_service_proto_msgTypes[5].OneofWrappers = []interface{}{}
+	file_user_service_proto_msgTypes[6].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_user_service_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   9,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_user_service_proto_goTypes,
+		DependencyIndexes: file_user_service_proto_depIdxs,
+		EnumInfos:         file_user_service_proto_enumTypes,
+		MessageInfos:      file_user_service_proto_msgTypes,
+	}.Build()
+	File_user_service_proto = out.File
+	file_user_service_proto_rawDesc = nil
+	file_user_service_proto_goTypes = nil
+	file_user_service_proto_depIdxs = nil
 }
diff --git a/internal/user/user_service.proto b/internal/user/user_service.proto
index f3e96934..1d3754c0 100644
--- a/internal/user/user_service.proto
+++ b/internal/user/user_service.proto
@@ -1,5 +1,5 @@
-syntax = "proto2";
-option go_package = "user";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/user";
 
 package appengine;
 
@@ -15,22 +15,22 @@ message UserServiceError {
 }
 
 message CreateLoginURLRequest {
-  required string destination_url = 1;
+  string destination_url = 1;
   optional string auth_domain = 2;
-  optional string federated_identity = 3 [default = ""];
+  optional string federated_identity = 3 ;
 }
 
 message CreateLoginURLResponse {
-  required string login_url = 1;
+  string login_url = 1;
 }
 
 message CreateLogoutURLRequest {
-  required string destination_url = 1;
+  string destination_url = 1;
   optional string auth_domain = 2;
 }
 
 message CreateLogoutURLResponse {
-  required string logout_url = 1;
+  string logout_url = 1;
 }
 
 message GetOAuthUserRequest {
@@ -40,12 +40,12 @@ message GetOAuthUserRequest {
 }
 
 message GetOAuthUserResponse {
-  required string email = 1;
-  required string user_id = 2;
-  required string auth_domain = 3;
-  optional string user_organization = 4 [default = ""];
-  optional bool is_admin = 5 [default = false];
-  optional string client_id = 6 [default = ""];
+  string email = 1;
+  string user_id = 2;
+  string auth_domain = 3;
+  optional string user_organization = 4 ;
+  optional bool is_admin = 5 ;
+  optional string client_id = 6 ;
 
   repeated string scopes = 7;
 }
@@ -54,5 +54,5 @@ message CheckOAuthSignatureRequest {
 }
 
 message CheckOAuthSignatureResponse {
-  required string oauth_consumer_key = 1;
+  string oauth_consumer_key = 1;
 }
diff --git a/internal/xmpp/xmpp_service.pb.go b/internal/xmpp/xmpp_service.pb.go
index a35e9b41..dee22446 100644
--- a/internal/xmpp/xmpp_service.pb.go
+++ b/internal/xmpp/xmpp_service.pb.go
@@ -1,26 +1,29 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google.golang.org/appengine/internal/xmpp/xmpp_service.proto
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: xmpp_service.proto
 
 package xmpp
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+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 XmppServiceError_ErrorCode int32
 
 const (
+	XmppServiceError_NONE                 XmppServiceError_ErrorCode = 0
 	XmppServiceError_UNSPECIFIED_ERROR    XmppServiceError_ErrorCode = 1
 	XmppServiceError_INVALID_JID          XmppServiceError_ErrorCode = 2
 	XmppServiceError_NO_BODY              XmppServiceError_ErrorCode = 3
@@ -32,47 +35,59 @@ const (
 	XmppServiceError_NONDEFAULT_MODULE    XmppServiceError_ErrorCode = 9
 )
 
-var XmppServiceError_ErrorCode_name = map[int32]string{
-	1: "UNSPECIFIED_ERROR",
-	2: "INVALID_JID",
-	3: "NO_BODY",
-	4: "INVALID_XML",
-	5: "INVALID_TYPE",
-	6: "INVALID_SHOW",
-	7: "EXCEEDED_MAX_SIZE",
-	8: "APPID_ALIAS_REQUIRED",
-	9: "NONDEFAULT_MODULE",
-}
-var XmppServiceError_ErrorCode_value = map[string]int32{
-	"UNSPECIFIED_ERROR":    1,
-	"INVALID_JID":          2,
-	"NO_BODY":              3,
-	"INVALID_XML":          4,
-	"INVALID_TYPE":         5,
-	"INVALID_SHOW":         6,
-	"EXCEEDED_MAX_SIZE":    7,
-	"APPID_ALIAS_REQUIRED": 8,
-	"NONDEFAULT_MODULE":    9,
-}
+// Enum value maps for XmppServiceError_ErrorCode.
+var (
+	XmppServiceError_ErrorCode_name = map[int32]string{
+		0: "NONE",
+		1: "UNSPECIFIED_ERROR",
+		2: "INVALID_JID",
+		3: "NO_BODY",
+		4: "INVALID_XML",
+		5: "INVALID_TYPE",
+		6: "INVALID_SHOW",
+		7: "EXCEEDED_MAX_SIZE",
+		8: "APPID_ALIAS_REQUIRED",
+		9: "NONDEFAULT_MODULE",
+	}
+	XmppServiceError_ErrorCode_value = map[string]int32{
+		"NONE":                 0,
+		"UNSPECIFIED_ERROR":    1,
+		"INVALID_JID":          2,
+		"NO_BODY":              3,
+		"INVALID_XML":          4,
+		"INVALID_TYPE":         5,
+		"INVALID_SHOW":         6,
+		"EXCEEDED_MAX_SIZE":    7,
+		"APPID_ALIAS_REQUIRED": 8,
+		"NONDEFAULT_MODULE":    9,
+	}
+)
 
 func (x XmppServiceError_ErrorCode) Enum() *XmppServiceError_ErrorCode {
 	p := new(XmppServiceError_ErrorCode)
 	*p = x
 	return p
 }
+
 func (x XmppServiceError_ErrorCode) String() string {
-	return proto.EnumName(XmppServiceError_ErrorCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *XmppServiceError_ErrorCode) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(XmppServiceError_ErrorCode_value, data, "XmppServiceError_ErrorCode")
-	if err != nil {
-		return err
-	}
-	*x = XmppServiceError_ErrorCode(value)
-	return nil
+
+func (XmppServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_xmpp_service_proto_enumTypes[0].Descriptor()
 }
+
+func (XmppServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_xmpp_service_proto_enumTypes[0]
+}
+
+func (x XmppServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use XmppServiceError_ErrorCode.Descriptor instead.
 func (XmppServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{0, 0}
+	return file_xmpp_service_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type PresenceResponse_SHOW int32
@@ -85,39 +100,49 @@ const (
 	PresenceResponse_EXTENDED_AWAY  PresenceResponse_SHOW = 4
 )
 
-var PresenceResponse_SHOW_name = map[int32]string{
-	0: "NORMAL",
-	1: "AWAY",
-	2: "DO_NOT_DISTURB",
-	3: "CHAT",
-	4: "EXTENDED_AWAY",
-}
-var PresenceResponse_SHOW_value = map[string]int32{
-	"NORMAL":         0,
-	"AWAY":           1,
-	"DO_NOT_DISTURB": 2,
-	"CHAT":           3,
-	"EXTENDED_AWAY":  4,
-}
+// Enum value maps for PresenceResponse_SHOW.
+var (
+	PresenceResponse_SHOW_name = map[int32]string{
+		0: "NORMAL",
+		1: "AWAY",
+		2: "DO_NOT_DISTURB",
+		3: "CHAT",
+		4: "EXTENDED_AWAY",
+	}
+	PresenceResponse_SHOW_value = map[string]int32{
+		"NORMAL":         0,
+		"AWAY":           1,
+		"DO_NOT_DISTURB": 2,
+		"CHAT":           3,
+		"EXTENDED_AWAY":  4,
+	}
+)
 
 func (x PresenceResponse_SHOW) Enum() *PresenceResponse_SHOW {
 	p := new(PresenceResponse_SHOW)
 	*p = x
 	return p
 }
+
 func (x PresenceResponse_SHOW) String() string {
-	return proto.EnumName(PresenceResponse_SHOW_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
-func (x *PresenceResponse_SHOW) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(PresenceResponse_SHOW_value, data, "PresenceResponse_SHOW")
-	if err != nil {
-		return err
-	}
-	*x = PresenceResponse_SHOW(value)
-	return nil
+
+func (PresenceResponse_SHOW) Descriptor() protoreflect.EnumDescriptor {
+	return file_xmpp_service_proto_enumTypes[1].Descriptor()
 }
+
+func (PresenceResponse_SHOW) Type() protoreflect.EnumType {
+	return &file_xmpp_service_proto_enumTypes[1]
+}
+
+func (x PresenceResponse_SHOW) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PresenceResponse_SHOW.Descriptor instead.
 func (PresenceResponse_SHOW) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{2, 0}
+	return file_xmpp_service_proto_rawDescGZIP(), []int{2, 0}
 }
 
 type XmppMessageResponse_XmppMessageStatus int32
@@ -128,599 +153,944 @@ const (
 	XmppMessageResponse_OTHER_ERROR XmppMessageResponse_XmppMessageStatus = 2
 )
 
-var XmppMessageResponse_XmppMessageStatus_name = map[int32]string{
-	0: "NO_ERROR",
-	1: "INVALID_JID",
-	2: "OTHER_ERROR",
-}
-var XmppMessageResponse_XmppMessageStatus_value = map[string]int32{
-	"NO_ERROR":    0,
-	"INVALID_JID": 1,
-	"OTHER_ERROR": 2,
-}
+// Enum value maps for XmppMessageResponse_XmppMessageStatus.
+var (
+	XmppMessageResponse_XmppMessageStatus_name = map[int32]string{
+		0: "NO_ERROR",
+		1: "INVALID_JID",
+		2: "OTHER_ERROR",
+	}
+	XmppMessageResponse_XmppMessageStatus_value = map[string]int32{
+		"NO_ERROR":    0,
+		"INVALID_JID": 1,
+		"OTHER_ERROR": 2,
+	}
+)
 
 func (x XmppMessageResponse_XmppMessageStatus) Enum() *XmppMessageResponse_XmppMessageStatus {
 	p := new(XmppMessageResponse_XmppMessageStatus)
 	*p = x
 	return p
 }
+
 func (x XmppMessageResponse_XmppMessageStatus) String() string {
-	return proto.EnumName(XmppMessageResponse_XmppMessageStatus_name, int32(x))
-}
-func (x *XmppMessageResponse_XmppMessageStatus) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(XmppMessageResponse_XmppMessageStatus_value, data, "XmppMessageResponse_XmppMessageStatus")
-	if err != nil {
-		return err
-	}
-	*x = XmppMessageResponse_XmppMessageStatus(value)
-	return nil
-}
-func (XmppMessageResponse_XmppMessageStatus) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{6, 0}
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-type XmppServiceError struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (XmppMessageResponse_XmppMessageStatus) Descriptor() protoreflect.EnumDescriptor {
+	return file_xmpp_service_proto_enumTypes[2].Descriptor()
 }
 
-func (m *XmppServiceError) Reset()         { *m = XmppServiceError{} }
-func (m *XmppServiceError) String() string { return proto.CompactTextString(m) }
-func (*XmppServiceError) ProtoMessage()    {}
-func (*XmppServiceError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{0}
+func (XmppMessageResponse_XmppMessageStatus) Type() protoreflect.EnumType {
+	return &file_xmpp_service_proto_enumTypes[2]
 }
-func (m *XmppServiceError) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_XmppServiceError.Unmarshal(m, b)
+
+func (x XmppMessageResponse_XmppMessageStatus) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
 }
-func (m *XmppServiceError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_XmppServiceError.Marshal(b, m, deterministic)
+
+// Deprecated: Use XmppMessageResponse_XmppMessageStatus.Descriptor instead.
+func (XmppMessageResponse_XmppMessageStatus) EnumDescriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{6, 0}
 }
-func (dst *XmppServiceError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_XmppServiceError.Merge(dst, src)
+
+type XmppServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
-func (m *XmppServiceError) XXX_Size() int {
-	return xxx_messageInfo_XmppServiceError.Size(m)
+
+func (x *XmppServiceError) Reset() {
+	*x = XmppServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *XmppServiceError) XXX_DiscardUnknown() {
-	xxx_messageInfo_XmppServiceError.DiscardUnknown(m)
+
+func (x *XmppServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_XmppServiceError proto.InternalMessageInfo
+func (*XmppServiceError) ProtoMessage() {}
 
-type PresenceRequest struct {
-	Jid                  *string  `protobuf:"bytes,1,req,name=jid" json:"jid,omitempty"`
-	FromJid              *string  `protobuf:"bytes,2,opt,name=from_jid,json=fromJid" json:"from_jid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *XmppServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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)
 }
 
-func (m *PresenceRequest) Reset()         { *m = PresenceRequest{} }
-func (m *PresenceRequest) String() string { return proto.CompactTextString(m) }
-func (*PresenceRequest) ProtoMessage()    {}
-func (*PresenceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{1}
-}
-func (m *PresenceRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PresenceRequest.Unmarshal(m, b)
+// Deprecated: Use XmppServiceError.ProtoReflect.Descriptor instead.
+func (*XmppServiceError) Descriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{0}
 }
-func (m *PresenceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PresenceRequest.Marshal(b, m, deterministic)
+
+type PresenceRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Jid     string  `protobuf:"bytes,1,opt,name=jid,proto3" json:"jid,omitempty"`
+	FromJid *string `protobuf:"bytes,2,opt,name=from_jid,json=fromJid,proto3,oneof" json:"from_jid,omitempty"`
 }
-func (dst *PresenceRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PresenceRequest.Merge(dst, src)
+
+func (x *PresenceRequest) Reset() {
+	*x = PresenceRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PresenceRequest) XXX_Size() int {
-	return xxx_messageInfo_PresenceRequest.Size(m)
+
+func (x *PresenceRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *PresenceRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_PresenceRequest.DiscardUnknown(m)
+
+func (*PresenceRequest) ProtoMessage() {}
+
+func (x *PresenceRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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)
 }
 
-var xxx_messageInfo_PresenceRequest proto.InternalMessageInfo
+// Deprecated: Use PresenceRequest.ProtoReflect.Descriptor instead.
+func (*PresenceRequest) Descriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{1}
+}
 
-func (m *PresenceRequest) GetJid() string {
-	if m != nil && m.Jid != nil {
-		return *m.Jid
+func (x *PresenceRequest) GetJid() string {
+	if x != nil {
+		return x.Jid
 	}
 	return ""
 }
 
-func (m *PresenceRequest) GetFromJid() string {
-	if m != nil && m.FromJid != nil {
-		return *m.FromJid
+func (x *PresenceRequest) GetFromJid() string {
+	if x != nil && x.FromJid != nil {
+		return *x.FromJid
 	}
 	return ""
 }
 
 type PresenceResponse struct {
-	IsAvailable          *bool                  `protobuf:"varint,1,req,name=is_available,json=isAvailable" json:"is_available,omitempty"`
-	Presence             *PresenceResponse_SHOW `protobuf:"varint,2,opt,name=presence,enum=appengine.PresenceResponse_SHOW" json:"presence,omitempty"`
-	Valid                *bool                  `protobuf:"varint,3,opt,name=valid" json:"valid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *PresenceResponse) Reset()         { *m = PresenceResponse{} }
-func (m *PresenceResponse) String() string { return proto.CompactTextString(m) }
-func (*PresenceResponse) ProtoMessage()    {}
-func (*PresenceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{2}
+	IsAvailable bool                   `protobuf:"varint,1,opt,name=is_available,json=isAvailable,proto3" json:"is_available,omitempty"`
+	Presence    *PresenceResponse_SHOW `protobuf:"varint,2,opt,name=presence,proto3,enum=appengine.PresenceResponse_SHOW,oneof" json:"presence,omitempty"`
+	Valid       *bool                  `protobuf:"varint,3,opt,name=valid,proto3,oneof" json:"valid,omitempty"`
 }
-func (m *PresenceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PresenceResponse.Unmarshal(m, b)
-}
-func (m *PresenceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PresenceResponse.Marshal(b, m, deterministic)
-}
-func (dst *PresenceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PresenceResponse.Merge(dst, src)
+
+func (x *PresenceResponse) Reset() {
+	*x = PresenceResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *PresenceResponse) XXX_Size() int {
-	return xxx_messageInfo_PresenceResponse.Size(m)
+
+func (x *PresenceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *PresenceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_PresenceResponse.DiscardUnknown(m)
+
+func (*PresenceResponse) ProtoMessage() {}
+
+func (x *PresenceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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)
 }
 
-var xxx_messageInfo_PresenceResponse proto.InternalMessageInfo
+// Deprecated: Use PresenceResponse.ProtoReflect.Descriptor instead.
+func (*PresenceResponse) Descriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{2}
+}
 
-func (m *PresenceResponse) GetIsAvailable() bool {
-	if m != nil && m.IsAvailable != nil {
-		return *m.IsAvailable
+func (x *PresenceResponse) GetIsAvailable() bool {
+	if x != nil {
+		return x.IsAvailable
 	}
 	return false
 }
 
-func (m *PresenceResponse) GetPresence() PresenceResponse_SHOW {
-	if m != nil && m.Presence != nil {
-		return *m.Presence
+func (x *PresenceResponse) GetPresence() PresenceResponse_SHOW {
+	if x != nil && x.Presence != nil {
+		return *x.Presence
 	}
 	return PresenceResponse_NORMAL
 }
 
-func (m *PresenceResponse) GetValid() bool {
-	if m != nil && m.Valid != nil {
-		return *m.Valid
+func (x *PresenceResponse) GetValid() bool {
+	if x != nil && x.Valid != nil {
+		return *x.Valid
 	}
 	return false
 }
 
 type BulkPresenceRequest struct {
-	Jid                  []string `protobuf:"bytes,1,rep,name=jid" json:"jid,omitempty"`
-	FromJid              *string  `protobuf:"bytes,2,opt,name=from_jid,json=fromJid" json:"from_jid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *BulkPresenceRequest) Reset()         { *m = BulkPresenceRequest{} }
-func (m *BulkPresenceRequest) String() string { return proto.CompactTextString(m) }
-func (*BulkPresenceRequest) ProtoMessage()    {}
-func (*BulkPresenceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{3}
-}
-func (m *BulkPresenceRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BulkPresenceRequest.Unmarshal(m, b)
-}
-func (m *BulkPresenceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BulkPresenceRequest.Marshal(b, m, deterministic)
+	Jid     []string `protobuf:"bytes,1,rep,name=jid,proto3" json:"jid,omitempty"`
+	FromJid *string  `protobuf:"bytes,2,opt,name=from_jid,json=fromJid,proto3,oneof" json:"from_jid,omitempty"`
 }
-func (dst *BulkPresenceRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BulkPresenceRequest.Merge(dst, src)
+
+func (x *BulkPresenceRequest) Reset() {
+	*x = BulkPresenceRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *BulkPresenceRequest) XXX_Size() int {
-	return xxx_messageInfo_BulkPresenceRequest.Size(m)
+
+func (x *BulkPresenceRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *BulkPresenceRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_BulkPresenceRequest.DiscardUnknown(m)
+
+func (*BulkPresenceRequest) ProtoMessage() {}
+
+func (x *BulkPresenceRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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)
 }
 
-var xxx_messageInfo_BulkPresenceRequest proto.InternalMessageInfo
+// Deprecated: Use BulkPresenceRequest.ProtoReflect.Descriptor instead.
+func (*BulkPresenceRequest) Descriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{3}
+}
 
-func (m *BulkPresenceRequest) GetJid() []string {
-	if m != nil {
-		return m.Jid
+func (x *BulkPresenceRequest) GetJid() []string {
+	if x != nil {
+		return x.Jid
 	}
 	return nil
 }
 
-func (m *BulkPresenceRequest) GetFromJid() string {
-	if m != nil && m.FromJid != nil {
-		return *m.FromJid
+func (x *BulkPresenceRequest) GetFromJid() string {
+	if x != nil && x.FromJid != nil {
+		return *x.FromJid
 	}
 	return ""
 }
 
 type BulkPresenceResponse struct {
-	PresenceResponse     []*PresenceResponse `protobuf:"bytes,1,rep,name=presence_response,json=presenceResponse" json:"presence_response,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *BulkPresenceResponse) Reset()         { *m = BulkPresenceResponse{} }
-func (m *BulkPresenceResponse) String() string { return proto.CompactTextString(m) }
-func (*BulkPresenceResponse) ProtoMessage()    {}
-func (*BulkPresenceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{4}
-}
-func (m *BulkPresenceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BulkPresenceResponse.Unmarshal(m, b)
+	PresenceResponse []*PresenceResponse `protobuf:"bytes,1,rep,name=presence_response,json=presenceResponse,proto3" json:"presence_response,omitempty"`
 }
-func (m *BulkPresenceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BulkPresenceResponse.Marshal(b, m, deterministic)
-}
-func (dst *BulkPresenceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BulkPresenceResponse.Merge(dst, src)
+
+func (x *BulkPresenceResponse) Reset() {
+	*x = BulkPresenceResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *BulkPresenceResponse) XXX_Size() int {
-	return xxx_messageInfo_BulkPresenceResponse.Size(m)
+
+func (x *BulkPresenceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *BulkPresenceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_BulkPresenceResponse.DiscardUnknown(m)
+
+func (*BulkPresenceResponse) ProtoMessage() {}
+
+func (x *BulkPresenceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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)
 }
 
-var xxx_messageInfo_BulkPresenceResponse proto.InternalMessageInfo
+// Deprecated: Use BulkPresenceResponse.ProtoReflect.Descriptor instead.
+func (*BulkPresenceResponse) Descriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{4}
+}
 
-func (m *BulkPresenceResponse) GetPresenceResponse() []*PresenceResponse {
-	if m != nil {
-		return m.PresenceResponse
+func (x *BulkPresenceResponse) GetPresenceResponse() []*PresenceResponse {
+	if x != nil {
+		return x.PresenceResponse
 	}
 	return nil
 }
 
 type XmppMessageRequest struct {
-	Jid                  []string `protobuf:"bytes,1,rep,name=jid" json:"jid,omitempty"`
-	Body                 *string  `protobuf:"bytes,2,req,name=body" json:"body,omitempty"`
-	RawXml               *bool    `protobuf:"varint,3,opt,name=raw_xml,json=rawXml,def=0" json:"raw_xml,omitempty"`
-	Type                 *string  `protobuf:"bytes,4,opt,name=type,def=chat" json:"type,omitempty"`
-	FromJid              *string  `protobuf:"bytes,5,opt,name=from_jid,json=fromJid" json:"from_jid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *XmppMessageRequest) Reset()         { *m = XmppMessageRequest{} }
-func (m *XmppMessageRequest) String() string { return proto.CompactTextString(m) }
-func (*XmppMessageRequest) ProtoMessage()    {}
-func (*XmppMessageRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{5}
-}
-func (m *XmppMessageRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_XmppMessageRequest.Unmarshal(m, b)
-}
-func (m *XmppMessageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_XmppMessageRequest.Marshal(b, m, deterministic)
-}
-func (dst *XmppMessageRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_XmppMessageRequest.Merge(dst, src)
-}
-func (m *XmppMessageRequest) XXX_Size() int {
-	return xxx_messageInfo_XmppMessageRequest.Size(m)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Jid     []string `protobuf:"bytes,1,rep,name=jid,proto3" json:"jid,omitempty"`
+	Body    string   `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
+	RawXml  *bool    `protobuf:"varint,3,opt,name=raw_xml,json=rawXml,proto3,oneof" json:"raw_xml,omitempty"`
+	Type    *string  `protobuf:"bytes,4,opt,name=type,proto3,oneof" json:"type,omitempty"`
+	FromJid *string  `protobuf:"bytes,5,opt,name=from_jid,json=fromJid,proto3,oneof" json:"from_jid,omitempty"`
+}
+
+func (x *XmppMessageRequest) Reset() {
+	*x = XmppMessageRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *XmppMessageRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_XmppMessageRequest.DiscardUnknown(m)
+
+func (x *XmppMessageRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_XmppMessageRequest proto.InternalMessageInfo
+func (*XmppMessageRequest) ProtoMessage() {}
 
-const Default_XmppMessageRequest_RawXml bool = false
-const Default_XmppMessageRequest_Type string = "chat"
+func (x *XmppMessageRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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 XmppMessageRequest.ProtoReflect.Descriptor instead.
+func (*XmppMessageRequest) Descriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{5}
+}
 
-func (m *XmppMessageRequest) GetJid() []string {
-	if m != nil {
-		return m.Jid
+func (x *XmppMessageRequest) GetJid() []string {
+	if x != nil {
+		return x.Jid
 	}
 	return nil
 }
 
-func (m *XmppMessageRequest) GetBody() string {
-	if m != nil && m.Body != nil {
-		return *m.Body
+func (x *XmppMessageRequest) GetBody() string {
+	if x != nil {
+		return x.Body
 	}
 	return ""
 }
 
-func (m *XmppMessageRequest) GetRawXml() bool {
-	if m != nil && m.RawXml != nil {
-		return *m.RawXml
+func (x *XmppMessageRequest) GetRawXml() bool {
+	if x != nil && x.RawXml != nil {
+		return *x.RawXml
 	}
-	return Default_XmppMessageRequest_RawXml
+	return false
 }
 
-func (m *XmppMessageRequest) GetType() string {
-	if m != nil && m.Type != nil {
-		return *m.Type
+func (x *XmppMessageRequest) GetType() string {
+	if x != nil && x.Type != nil {
+		return *x.Type
 	}
-	return Default_XmppMessageRequest_Type
+	return ""
 }
 
-func (m *XmppMessageRequest) GetFromJid() string {
-	if m != nil && m.FromJid != nil {
-		return *m.FromJid
+func (x *XmppMessageRequest) GetFromJid() string {
+	if x != nil && x.FromJid != nil {
+		return *x.FromJid
 	}
 	return ""
 }
 
 type XmppMessageResponse struct {
-	Status               []XmppMessageResponse_XmppMessageStatus `protobuf:"varint,1,rep,name=status,enum=appengine.XmppMessageResponse_XmppMessageStatus" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                `json:"-"`
-	XXX_unrecognized     []byte                                  `json:"-"`
-	XXX_sizecache        int32                                   `json:"-"`
-}
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (m *XmppMessageResponse) Reset()         { *m = XmppMessageResponse{} }
-func (m *XmppMessageResponse) String() string { return proto.CompactTextString(m) }
-func (*XmppMessageResponse) ProtoMessage()    {}
-func (*XmppMessageResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{6}
-}
-func (m *XmppMessageResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_XmppMessageResponse.Unmarshal(m, b)
-}
-func (m *XmppMessageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_XmppMessageResponse.Marshal(b, m, deterministic)
+	Status []XmppMessageResponse_XmppMessageStatus `protobuf:"varint,1,rep,packed,name=status,proto3,enum=appengine.XmppMessageResponse_XmppMessageStatus" json:"status,omitempty"`
 }
-func (dst *XmppMessageResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_XmppMessageResponse.Merge(dst, src)
+
+func (x *XmppMessageResponse) Reset() {
+	*x = XmppMessageResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *XmppMessageResponse) XXX_Size() int {
-	return xxx_messageInfo_XmppMessageResponse.Size(m)
+
+func (x *XmppMessageResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *XmppMessageResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_XmppMessageResponse.DiscardUnknown(m)
+
+func (*XmppMessageResponse) ProtoMessage() {}
+
+func (x *XmppMessageResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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)
 }
 
-var xxx_messageInfo_XmppMessageResponse proto.InternalMessageInfo
+// Deprecated: Use XmppMessageResponse.ProtoReflect.Descriptor instead.
+func (*XmppMessageResponse) Descriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{6}
+}
 
-func (m *XmppMessageResponse) GetStatus() []XmppMessageResponse_XmppMessageStatus {
-	if m != nil {
-		return m.Status
+func (x *XmppMessageResponse) GetStatus() []XmppMessageResponse_XmppMessageStatus {
+	if x != nil {
+		return x.Status
 	}
 	return nil
 }
 
 type XmppSendPresenceRequest struct {
-	Jid                  *string  `protobuf:"bytes,1,req,name=jid" json:"jid,omitempty"`
-	Type                 *string  `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"`
-	Show                 *string  `protobuf:"bytes,3,opt,name=show" json:"show,omitempty"`
-	Status               *string  `protobuf:"bytes,4,opt,name=status" json:"status,omitempty"`
-	FromJid              *string  `protobuf:"bytes,5,opt,name=from_jid,json=fromJid" json:"from_jid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *XmppSendPresenceRequest) Reset()         { *m = XmppSendPresenceRequest{} }
-func (m *XmppSendPresenceRequest) String() string { return proto.CompactTextString(m) }
-func (*XmppSendPresenceRequest) ProtoMessage()    {}
-func (*XmppSendPresenceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{7}
-}
-func (m *XmppSendPresenceRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_XmppSendPresenceRequest.Unmarshal(m, b)
-}
-func (m *XmppSendPresenceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_XmppSendPresenceRequest.Marshal(b, m, deterministic)
-}
-func (dst *XmppSendPresenceRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_XmppSendPresenceRequest.Merge(dst, src)
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Jid     string  `protobuf:"bytes,1,opt,name=jid,proto3" json:"jid,omitempty"`
+	Type    *string `protobuf:"bytes,2,opt,name=type,proto3,oneof" json:"type,omitempty"`
+	Show    *string `protobuf:"bytes,3,opt,name=show,proto3,oneof" json:"show,omitempty"`
+	Status  *string `protobuf:"bytes,4,opt,name=status,proto3,oneof" json:"status,omitempty"`
+	FromJid *string `protobuf:"bytes,5,opt,name=from_jid,json=fromJid,proto3,oneof" json:"from_jid,omitempty"`
+}
+
+func (x *XmppSendPresenceRequest) Reset() {
+	*x = XmppSendPresenceRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *XmppSendPresenceRequest) XXX_Size() int {
-	return xxx_messageInfo_XmppSendPresenceRequest.Size(m)
+
+func (x *XmppSendPresenceRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *XmppSendPresenceRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_XmppSendPresenceRequest.DiscardUnknown(m)
+
+func (*XmppSendPresenceRequest) ProtoMessage() {}
+
+func (x *XmppSendPresenceRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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)
 }
 
-var xxx_messageInfo_XmppSendPresenceRequest proto.InternalMessageInfo
+// Deprecated: Use XmppSendPresenceRequest.ProtoReflect.Descriptor instead.
+func (*XmppSendPresenceRequest) Descriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{7}
+}
 
-func (m *XmppSendPresenceRequest) GetJid() string {
-	if m != nil && m.Jid != nil {
-		return *m.Jid
+func (x *XmppSendPresenceRequest) GetJid() string {
+	if x != nil {
+		return x.Jid
 	}
 	return ""
 }
 
-func (m *XmppSendPresenceRequest) GetType() string {
-	if m != nil && m.Type != nil {
-		return *m.Type
+func (x *XmppSendPresenceRequest) GetType() string {
+	if x != nil && x.Type != nil {
+		return *x.Type
 	}
 	return ""
 }
 
-func (m *XmppSendPresenceRequest) GetShow() string {
-	if m != nil && m.Show != nil {
-		return *m.Show
+func (x *XmppSendPresenceRequest) GetShow() string {
+	if x != nil && x.Show != nil {
+		return *x.Show
 	}
 	return ""
 }
 
-func (m *XmppSendPresenceRequest) GetStatus() string {
-	if m != nil && m.Status != nil {
-		return *m.Status
+func (x *XmppSendPresenceRequest) GetStatus() string {
+	if x != nil && x.Status != nil {
+		return *x.Status
 	}
 	return ""
 }
 
-func (m *XmppSendPresenceRequest) GetFromJid() string {
-	if m != nil && m.FromJid != nil {
-		return *m.FromJid
+func (x *XmppSendPresenceRequest) GetFromJid() string {
+	if x != nil && x.FromJid != nil {
+		return *x.FromJid
 	}
 	return ""
 }
 
 type XmppSendPresenceResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *XmppSendPresenceResponse) Reset()         { *m = XmppSendPresenceResponse{} }
-func (m *XmppSendPresenceResponse) String() string { return proto.CompactTextString(m) }
-func (*XmppSendPresenceResponse) ProtoMessage()    {}
-func (*XmppSendPresenceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{8}
-}
-func (m *XmppSendPresenceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_XmppSendPresenceResponse.Unmarshal(m, b)
-}
-func (m *XmppSendPresenceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_XmppSendPresenceResponse.Marshal(b, m, deterministic)
-}
-func (dst *XmppSendPresenceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_XmppSendPresenceResponse.Merge(dst, src)
-}
-func (m *XmppSendPresenceResponse) XXX_Size() int {
-	return xxx_messageInfo_XmppSendPresenceResponse.Size(m)
+func (x *XmppSendPresenceResponse) Reset() {
+	*x = XmppSendPresenceResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *XmppSendPresenceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_XmppSendPresenceResponse.DiscardUnknown(m)
+
+func (x *XmppSendPresenceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-var xxx_messageInfo_XmppSendPresenceResponse proto.InternalMessageInfo
+func (*XmppSendPresenceResponse) ProtoMessage() {}
 
-type XmppInviteRequest struct {
-	Jid                  *string  `protobuf:"bytes,1,req,name=jid" json:"jid,omitempty"`
-	FromJid              *string  `protobuf:"bytes,2,opt,name=from_jid,json=fromJid" json:"from_jid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (x *XmppSendPresenceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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)
 }
 
-func (m *XmppInviteRequest) Reset()         { *m = XmppInviteRequest{} }
-func (m *XmppInviteRequest) String() string { return proto.CompactTextString(m) }
-func (*XmppInviteRequest) ProtoMessage()    {}
-func (*XmppInviteRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{9}
-}
-func (m *XmppInviteRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_XmppInviteRequest.Unmarshal(m, b)
+// Deprecated: Use XmppSendPresenceResponse.ProtoReflect.Descriptor instead.
+func (*XmppSendPresenceResponse) Descriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{8}
 }
-func (m *XmppInviteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_XmppInviteRequest.Marshal(b, m, deterministic)
+
+type XmppInviteRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Jid     string  `protobuf:"bytes,1,opt,name=jid,proto3" json:"jid,omitempty"`
+	FromJid *string `protobuf:"bytes,2,opt,name=from_jid,json=fromJid,proto3,oneof" json:"from_jid,omitempty"`
 }
-func (dst *XmppInviteRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_XmppInviteRequest.Merge(dst, src)
+
+func (x *XmppInviteRequest) Reset() {
+	*x = XmppInviteRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *XmppInviteRequest) XXX_Size() int {
-	return xxx_messageInfo_XmppInviteRequest.Size(m)
+
+func (x *XmppInviteRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
-func (m *XmppInviteRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_XmppInviteRequest.DiscardUnknown(m)
+
+func (*XmppInviteRequest) ProtoMessage() {}
+
+func (x *XmppInviteRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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)
 }
 
-var xxx_messageInfo_XmppInviteRequest proto.InternalMessageInfo
+// Deprecated: Use XmppInviteRequest.ProtoReflect.Descriptor instead.
+func (*XmppInviteRequest) Descriptor() ([]byte, []int) {
+	return file_xmpp_service_proto_rawDescGZIP(), []int{9}
+}
 
-func (m *XmppInviteRequest) GetJid() string {
-	if m != nil && m.Jid != nil {
-		return *m.Jid
+func (x *XmppInviteRequest) GetJid() string {
+	if x != nil {
+		return x.Jid
 	}
 	return ""
 }
 
-func (m *XmppInviteRequest) GetFromJid() string {
-	if m != nil && m.FromJid != nil {
-		return *m.FromJid
+func (x *XmppInviteRequest) GetFromJid() string {
+	if x != nil && x.FromJid != nil {
+		return *x.FromJid
 	}
 	return ""
 }
 
 type XmppInviteResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *XmppInviteResponse) Reset() {
+	*x = XmppInviteResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_xmpp_service_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *XmppInviteResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *XmppInviteResponse) Reset()         { *m = XmppInviteResponse{} }
-func (m *XmppInviteResponse) String() string { return proto.CompactTextString(m) }
-func (*XmppInviteResponse) ProtoMessage()    {}
+func (*XmppInviteResponse) ProtoMessage() {}
+
+func (x *XmppInviteResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_xmpp_service_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 XmppInviteResponse.ProtoReflect.Descriptor instead.
 func (*XmppInviteResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xmpp_service_628da92437bed65f, []int{10}
-}
-func (m *XmppInviteResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_XmppInviteResponse.Unmarshal(m, b)
-}
-func (m *XmppInviteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_XmppInviteResponse.Marshal(b, m, deterministic)
-}
-func (dst *XmppInviteResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_XmppInviteResponse.Merge(dst, src)
-}
-func (m *XmppInviteResponse) XXX_Size() int {
-	return xxx_messageInfo_XmppInviteResponse.Size(m)
-}
-func (m *XmppInviteResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_XmppInviteResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_XmppInviteResponse proto.InternalMessageInfo
-
-func init() {
-	proto.RegisterType((*XmppServiceError)(nil), "appengine.XmppServiceError")
-	proto.RegisterType((*PresenceRequest)(nil), "appengine.PresenceRequest")
-	proto.RegisterType((*PresenceResponse)(nil), "appengine.PresenceResponse")
-	proto.RegisterType((*BulkPresenceRequest)(nil), "appengine.BulkPresenceRequest")
-	proto.RegisterType((*BulkPresenceResponse)(nil), "appengine.BulkPresenceResponse")
-	proto.RegisterType((*XmppMessageRequest)(nil), "appengine.XmppMessageRequest")
-	proto.RegisterType((*XmppMessageResponse)(nil), "appengine.XmppMessageResponse")
-	proto.RegisterType((*XmppSendPresenceRequest)(nil), "appengine.XmppSendPresenceRequest")
-	proto.RegisterType((*XmppSendPresenceResponse)(nil), "appengine.XmppSendPresenceResponse")
-	proto.RegisterType((*XmppInviteRequest)(nil), "appengine.XmppInviteRequest")
-	proto.RegisterType((*XmppInviteResponse)(nil), "appengine.XmppInviteResponse")
-}
-
-func init() {
-	proto.RegisterFile("google.golang.org/appengine/internal/xmpp/xmpp_service.proto", fileDescriptor_xmpp_service_628da92437bed65f)
-}
-
-var fileDescriptor_xmpp_service_628da92437bed65f = []byte{
-	// 681 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xcd, 0x72, 0xda, 0x48,
-	0x10, 0xb6, 0x40, 0xfc, 0x35, 0x5e, 0x7b, 0x18, 0xb3, 0xbb, 0xec, 0xa6, 0x2a, 0x45, 0x74, 0xf2,
-	0x09, 0xa7, 0x7c, 0x74, 0xb9, 0x52, 0x11, 0x68, 0x5c, 0xc8, 0x05, 0x12, 0x19, 0x20, 0xc6, 0xbe,
-	0x4c, 0x64, 0x33, 0x96, 0x95, 0x08, 0x49, 0x91, 0x64, 0x6c, 0xbf, 0x40, 0xae, 0x79, 0x89, 0xbc,
-	0x46, 0x5e, 0x22, 0xa7, 0x3c, 0x4e, 0x4a, 0x23, 0x41, 0xc0, 0x4e, 0x9c, 0x54, 0x2e, 0x54, 0xcf,
-	0x37, 0xdd, 0x1f, 0xfd, 0x7d, 0x3d, 0x2d, 0x38, 0xb4, 0x7d, 0xdf, 0x76, 0x79, 0xcb, 0xf6, 0x5d,
-	0xcb, 0xb3, 0x5b, 0x7e, 0x68, 0xef, 0x59, 0x41, 0xc0, 0x3d, 0xdb, 0xf1, 0xf8, 0x9e, 0xe3, 0xc5,
-	0x3c, 0xf4, 0x2c, 0x77, 0xef, 0x76, 0x16, 0x04, 0xe2, 0x87, 0x45, 0x3c, 0x9c, 0x3b, 0x17, 0xbc,
-	0x15, 0x84, 0x7e, 0xec, 0xe3, 0xca, 0x32, 0x57, 0xf9, 0x22, 0x01, 0x9a, 0xcc, 0x82, 0x60, 0x98,
-	0x26, 0x90, 0x30, 0xf4, 0x43, 0xe5, 0xb3, 0x04, 0x15, 0x11, 0x75, 0xfc, 0x29, 0xc7, 0x7f, 0x43,
-	0x6d, 0x6c, 0x0c, 0x07, 0xa4, 0xa3, 0x1f, 0xe9, 0x44, 0x63, 0x84, 0x52, 0x93, 0x22, 0x09, 0x6f,
-	0x43, 0x55, 0x37, 0x5e, 0xab, 0x3d, 0x5d, 0x63, 0xc7, 0xba, 0x86, 0x72, 0xb8, 0x0a, 0x25, 0xc3,
-	0x64, 0x6d, 0x53, 0x3b, 0x45, 0xf9, 0xd5, 0xdb, 0x49, 0xbf, 0x87, 0x64, 0x8c, 0x60, 0x73, 0x01,
-	0x8c, 0x4e, 0x07, 0x04, 0x15, 0x56, 0x91, 0x61, 0xd7, 0x3c, 0x41, 0xc5, 0xe4, 0x9f, 0xc8, 0xa4,
-	0x43, 0x88, 0x46, 0x34, 0xd6, 0x57, 0x27, 0x6c, 0xa8, 0x9f, 0x11, 0x54, 0xc2, 0x0d, 0xa8, 0xab,
-	0x83, 0x81, 0xae, 0x31, 0xb5, 0xa7, 0xab, 0x43, 0x46, 0xc9, 0xab, 0xb1, 0x4e, 0x89, 0x86, 0xca,
-	0x49, 0x81, 0x61, 0x1a, 0x1a, 0x39, 0x52, 0xc7, 0xbd, 0x11, 0xeb, 0x9b, 0xda, 0xb8, 0x47, 0x50,
-	0x45, 0x79, 0x01, 0xdb, 0x83, 0x90, 0x47, 0xdc, 0xbb, 0xe0, 0x94, 0xbf, 0xbf, 0xe6, 0x51, 0x8c,
-	0x11, 0xe4, 0xdf, 0x3a, 0xd3, 0x86, 0xd4, 0xcc, 0xed, 0x56, 0x68, 0x12, 0xe2, 0xff, 0xa0, 0x7c,
-	0x19, 0xfa, 0x33, 0x96, 0xc0, 0xb9, 0xa6, 0xb4, 0x5b, 0xa1, 0xa5, 0xe4, 0x7c, 0xec, 0x4c, 0x95,
-	0xaf, 0x12, 0xa0, 0xef, 0x04, 0x51, 0xe0, 0x7b, 0x11, 0xc7, 0xcf, 0x60, 0xd3, 0x89, 0x98, 0x35,
-	0xb7, 0x1c, 0xd7, 0x3a, 0x77, 0xb9, 0xa0, 0x2a, 0xd3, 0xaa, 0x13, 0xa9, 0x0b, 0x08, 0x1f, 0x42,
-	0x39, 0xc8, 0xca, 0x04, 0xe5, 0xd6, 0x7e, 0xb3, 0xb5, 0xb4, 0xba, 0x75, 0x9f, 0xb1, 0x95, 0xa8,
-	0xa6, 0xcb, 0x0a, 0x5c, 0x87, 0xc2, 0xdc, 0x72, 0x9d, 0x69, 0x23, 0xdf, 0x94, 0x76, 0xcb, 0x34,
-	0x3d, 0x28, 0x7d, 0x90, 0x93, 0x3c, 0x0c, 0x50, 0x34, 0x4c, 0xda, 0x57, 0x7b, 0x68, 0x03, 0x97,
-	0x41, 0x56, 0x4f, 0xd4, 0x53, 0x24, 0x61, 0x0c, 0x5b, 0x9a, 0xc9, 0x0c, 0x73, 0xc4, 0x34, 0x7d,
-	0x38, 0x1a, 0xd3, 0x36, 0xca, 0x25, 0xb7, 0x9d, 0xae, 0x3a, 0x42, 0x79, 0x5c, 0x83, 0xbf, 0xc8,
-	0x64, 0x44, 0x8c, 0xc4, 0x4f, 0x51, 0x20, 0x2b, 0x6d, 0xd8, 0x69, 0x5f, 0xbb, 0xef, 0x7e, 0x6a,
-	0x4f, 0xfe, 0x37, 0xec, 0x79, 0x03, 0xf5, 0x75, 0x8e, 0xcc, 0xa1, 0x2e, 0xd4, 0x16, 0x62, 0x58,
-	0x98, 0x81, 0x82, 0xb2, 0xba, 0xff, 0xe4, 0x11, 0x1f, 0x28, 0x0a, 0xee, 0x21, 0xca, 0x47, 0x09,
-	0x70, 0xf2, 0x2a, 0xfb, 0x3c, 0x8a, 0x2c, 0xfb, 0x91, 0x2e, 0x31, 0xc8, 0xe7, 0xfe, 0xf4, 0xae,
-	0x91, 0x13, 0x73, 0x15, 0x31, 0x7e, 0x0a, 0xa5, 0xd0, 0xba, 0x61, 0xb7, 0x33, 0x37, 0x75, 0xf2,
-	0xa0, 0x70, 0x69, 0xb9, 0x11, 0xa7, 0xc5, 0xd0, 0xba, 0x99, 0xcc, 0x5c, 0xdc, 0x00, 0x39, 0xbe,
-	0x0b, 0x78, 0x43, 0x4e, 0x54, 0x1d, 0xc8, 0x17, 0x57, 0x56, 0x4c, 0x05, 0xb2, 0xa6, 0xb9, 0xb0,
-	0xae, 0xf9, 0x93, 0x04, 0x3b, 0x6b, 0x1d, 0x2d, 0x35, 0x17, 0xa3, 0xd8, 0x8a, 0xaf, 0x23, 0xd1,
-	0xd5, 0xd6, 0xfe, 0xf3, 0x15, 0xa1, 0x3f, 0xc8, 0x5f, 0xc5, 0x86, 0xa2, 0x8e, 0x66, 0xf5, 0x4a,
-	0x07, 0x6a, 0x0f, 0x2e, 0xf1, 0x26, 0x94, 0x0d, 0x33, 0x5b, 0xb9, 0x8d, 0xfb, 0x2b, 0x27, 0x76,
-	0xd0, 0x1c, 0x75, 0x09, 0xcd, 0x32, 0x72, 0xca, 0x07, 0x09, 0xfe, 0x4d, 0xd7, 0xd9, 0x9b, 0xfe,
-	0x7a, 0x05, 0x70, 0xe6, 0x44, 0x3a, 0xdf, 0xd4, 0x03, 0x0c, 0x72, 0x74, 0xe5, 0xdf, 0x08, 0xeb,
-	0x2a, 0x54, 0xc4, 0xf8, 0x9f, 0xa5, 0x48, 0xe1, 0xd9, 0xa2, 0xe5, 0xc7, 0xfc, 0xfa, 0x1f, 0x1a,
-	0x0f, 0xfb, 0xc8, 0xa6, 0xfb, 0x32, 0x55, 0xaa, 0x7b, 0x73, 0x27, 0xfe, 0xb3, 0x05, 0xad, 0xa7,
-	0xcf, 0x63, 0xc1, 0x90, 0xf2, 0xb6, 0x8b, 0x67, 0x72, 0xf2, 0xb1, 0xfb, 0x16, 0x00, 0x00, 0xff,
-	0xff, 0x4e, 0x58, 0x2e, 0xb1, 0x1d, 0x05, 0x00, 0x00,
+	return file_xmpp_service_proto_rawDescGZIP(), []int{10}
+}
+
+var File_xmpp_service_proto protoreflect.FileDescriptor
+
+var file_xmpp_service_proto_rawDesc = []byte{
+	0x0a, 0x12, 0x78, 0x6d, 0x70, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22,
+	0xdc, 0x01, 0x0a, 0x10, 0x58, 0x6d, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45,
+	0x72, 0x72, 0x6f, 0x72, 0x22, 0xc7, 0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f,
+	0x64, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11,
+	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+	0x52, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4a,
+	0x49, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x4f, 0x5f, 0x42, 0x4f, 0x44, 0x59, 0x10,
+	0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x58, 0x4d, 0x4c,
+	0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x54, 0x59,
+	0x50, 0x45, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f,
+	0x53, 0x48, 0x4f, 0x57, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44,
+	0x45, 0x44, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a,
+	0x14, 0x41, 0x50, 0x50, 0x49, 0x44, 0x5f, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x5f, 0x52, 0x45, 0x51,
+	0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x4f, 0x4e, 0x44, 0x45,
+	0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x09, 0x22, 0x50,
+	0x0a, 0x0f, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x10, 0x0a, 0x03, 0x6a, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+	0x6a, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6a, 0x69, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4a, 0x69, 0x64,
+	0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6a, 0x69, 0x64,
+	0x22, 0xf9, 0x01, 0x0a, 0x10, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x61, 0x76, 0x61, 0x69,
+	0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x41,
+	0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x73,
+	0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x48, 0x4f, 0x57, 0x48, 0x00, 0x52, 0x08,
+	0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x69, 0x64, 0x88, 0x01, 0x01, 0x22, 0x4d, 0x0a, 0x04, 0x53, 0x48, 0x4f, 0x57, 0x12, 0x0a,
+	0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x57,
+	0x41, 0x59, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44,
+	0x49, 0x53, 0x54, 0x55, 0x52, 0x42, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x48, 0x41, 0x54,
+	0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x41,
+	0x57, 0x41, 0x59, 0x10, 0x04, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e,
+	0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x13,
+	0x42, 0x75, 0x6c, 0x6b, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6a, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
+	0x52, 0x03, 0x6a, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6a, 0x69,
+	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4a,
+	0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6a,
+	0x69, 0x64, 0x22, 0x60, 0x0a, 0x14, 0x42, 0x75, 0x6c, 0x6b, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e,
+	0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x72,
+	0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18,
+	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x52, 0x10, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x12, 0x58, 0x6d, 0x70, 0x70, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6a,
+	0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x6a, 0x69, 0x64, 0x12, 0x12, 0x0a,
+	0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64,
+	0x79, 0x12, 0x1c, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f, 0x78, 0x6d, 0x6c, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x72, 0x61, 0x77, 0x58, 0x6d, 0x6c, 0x88, 0x01, 0x01, 0x12,
+	0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52,
+	0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d,
+	0x5f, 0x6a, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x66, 0x72,
+	0x6f, 0x6d, 0x4a, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x61, 0x77,
+	0x5f, 0x78, 0x6d, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a,
+	0x09, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6a, 0x69, 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x13, 0x58,
+	0x6d, 0x70, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03,
+	0x28, 0x0e, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x58,
+	0x6d, 0x70, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x2e, 0x58, 0x6d, 0x70, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x43, 0x0a, 0x11,
+	0x58, 0x6d, 0x70, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x00, 0x12,
+	0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4a, 0x49, 0x44, 0x10, 0x01,
+	0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
+	0x02, 0x22, 0xc4, 0x01, 0x0a, 0x17, 0x58, 0x6d, 0x70, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x72,
+	0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a,
+	0x03, 0x6a, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6a, 0x69, 0x64, 0x12,
+	0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+	0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x68, 0x6f, 0x77,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x88, 0x01,
+	0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e,
+	0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6a, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x03, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4a, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07,
+	0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x68, 0x6f, 0x77,
+	0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+	0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6a, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x58, 0x6d, 0x70, 0x70,
+	0x53, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x11, 0x58, 0x6d, 0x70, 0x70, 0x49, 0x6e, 0x76, 0x69,
+	0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6a, 0x69, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6a, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x66,
+	0x72, 0x6f, 0x6d, 0x5f, 0x6a, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+	0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4a, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+	0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6a, 0x69, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x58, 0x6d, 0x70, 0x70,
+	0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2b,
+	0x5a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x78, 0x6d, 0x70, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x33,
+}
+
+var (
+	file_xmpp_service_proto_rawDescOnce sync.Once
+	file_xmpp_service_proto_rawDescData = file_xmpp_service_proto_rawDesc
+)
+
+func file_xmpp_service_proto_rawDescGZIP() []byte {
+	file_xmpp_service_proto_rawDescOnce.Do(func() {
+		file_xmpp_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_xmpp_service_proto_rawDescData)
+	})
+	return file_xmpp_service_proto_rawDescData
+}
+
+var file_xmpp_service_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
+var file_xmpp_service_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
+var file_xmpp_service_proto_goTypes = []interface{}{
+	(XmppServiceError_ErrorCode)(0),            // 0: appengine.XmppServiceError.ErrorCode
+	(PresenceResponse_SHOW)(0),                 // 1: appengine.PresenceResponse.SHOW
+	(XmppMessageResponse_XmppMessageStatus)(0), // 2: appengine.XmppMessageResponse.XmppMessageStatus
+	(*XmppServiceError)(nil),                   // 3: appengine.XmppServiceError
+	(*PresenceRequest)(nil),                    // 4: appengine.PresenceRequest
+	(*PresenceResponse)(nil),                   // 5: appengine.PresenceResponse
+	(*BulkPresenceRequest)(nil),                // 6: appengine.BulkPresenceRequest
+	(*BulkPresenceResponse)(nil),               // 7: appengine.BulkPresenceResponse
+	(*XmppMessageRequest)(nil),                 // 8: appengine.XmppMessageRequest
+	(*XmppMessageResponse)(nil),                // 9: appengine.XmppMessageResponse
+	(*XmppSendPresenceRequest)(nil),            // 10: appengine.XmppSendPresenceRequest
+	(*XmppSendPresenceResponse)(nil),           // 11: appengine.XmppSendPresenceResponse
+	(*XmppInviteRequest)(nil),                  // 12: appengine.XmppInviteRequest
+	(*XmppInviteResponse)(nil),                 // 13: appengine.XmppInviteResponse
+}
+var file_xmpp_service_proto_depIdxs = []int32{
+	1, // 0: appengine.PresenceResponse.presence:type_name -> appengine.PresenceResponse.SHOW
+	5, // 1: appengine.BulkPresenceResponse.presence_response:type_name -> appengine.PresenceResponse
+	2, // 2: appengine.XmppMessageResponse.status:type_name -> appengine.XmppMessageResponse.XmppMessageStatus
+	3, // [3:3] is the sub-list for method output_type
+	3, // [3:3] is the sub-list for method input_type
+	3, // [3:3] is the sub-list for extension type_name
+	3, // [3:3] is the sub-list for extension extendee
+	0, // [0:3] is the sub-list for field type_name
+}
+
+func init() { file_xmpp_service_proto_init() }
+func file_xmpp_service_proto_init() {
+	if File_xmpp_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_xmpp_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*XmppServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_xmpp_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PresenceRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_xmpp_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PresenceResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_xmpp_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BulkPresenceRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_xmpp_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BulkPresenceResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_xmpp_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*XmppMessageRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_xmpp_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*XmppMessageResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_xmpp_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*XmppSendPresenceRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_xmpp_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*XmppSendPresenceResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_xmpp_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*XmppInviteRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_xmpp_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*XmppInviteResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_xmpp_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_xmpp_service_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	file_xmpp_service_proto_msgTypes[3].OneofWrappers = []interface{}{}
+	file_xmpp_service_proto_msgTypes[5].OneofWrappers = []interface{}{}
+	file_xmpp_service_proto_msgTypes[7].OneofWrappers = []interface{}{}
+	file_xmpp_service_proto_msgTypes[9].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_xmpp_service_proto_rawDesc,
+			NumEnums:      3,
+			NumMessages:   11,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_xmpp_service_proto_goTypes,
+		DependencyIndexes: file_xmpp_service_proto_depIdxs,
+		EnumInfos:         file_xmpp_service_proto_enumTypes,
+		MessageInfos:      file_xmpp_service_proto_msgTypes,
+	}.Build()
+	File_xmpp_service_proto = out.File
+	file_xmpp_service_proto_rawDesc = nil
+	file_xmpp_service_proto_goTypes = nil
+	file_xmpp_service_proto_depIdxs = nil
 }
diff --git a/internal/xmpp/xmpp_service.proto b/internal/xmpp/xmpp_service.proto
index 472d52eb..f436af97 100644
--- a/internal/xmpp/xmpp_service.proto
+++ b/internal/xmpp/xmpp_service.proto
@@ -1,10 +1,11 @@
-syntax = "proto2";
-option go_package = "xmpp";
+syntax = "proto3";
+option go_package = "google.golang.org/appengine/internal/xmpp";
 
 package appengine;
 
 message XmppServiceError {
   enum ErrorCode {
+    NONE = 0;
     UNSPECIFIED_ERROR = 1;
     INVALID_JID = 2;
     NO_BODY = 3;
@@ -18,7 +19,7 @@ message XmppServiceError {
 }
 
 message PresenceRequest {
-  required string jid = 1;
+  string jid = 1;
   optional string from_jid = 2;
 }
 
@@ -31,7 +32,7 @@ message PresenceResponse {
     EXTENDED_AWAY = 4;
   }
 
-  required bool is_available = 1;
+  bool is_available = 1;
   optional SHOW presence = 2;
   optional bool valid = 3;
 }
@@ -47,9 +48,9 @@ message BulkPresenceResponse {
 
 message XmppMessageRequest {
   repeated string jid = 1;
-  required string body = 2;
-  optional bool raw_xml = 3 [ default = false ];
-  optional string type = 4 [ default = "chat" ];
+  string body = 2;
+  optional bool raw_xml = 3;
+  optional string type = 4;
   optional string from_jid = 5;
 }
 
@@ -64,7 +65,7 @@ message XmppMessageResponse {
 }
 
 message XmppSendPresenceRequest {
-  required string jid = 1;
+  string jid = 1;
   optional string type = 2;
   optional string show = 3;
   optional string status = 4;
@@ -75,7 +76,7 @@ message XmppSendPresenceResponse {
 }
 
 message XmppInviteRequest {
-  required string jid = 1;
+  string jid = 1;
   optional string from_jid = 2;
 }
 
diff --git a/log/log.go b/log/log.go
index ab234ff6..27a89798 100644
--- a/log/log.go
+++ b/log/log.go
@@ -36,7 +36,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal"
diff --git a/log/log_test.go b/log/log_test.go
index 726468e2..5cbf4742 100644
--- a/log/log_test.go
+++ b/log/log_test.go
@@ -9,7 +9,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	pb "google.golang.org/appengine/internal/log"
 )
diff --git a/mail/mail.go b/mail/mail.go
index 19735214..92e24a68 100644
--- a/mail/mail.go
+++ b/mail/mail.go
@@ -24,7 +24,7 @@ import (
 	"context"
 	"net/mail"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 	bpb "google.golang.org/appengine/internal/base"
diff --git a/mail/mail_test.go b/mail/mail_test.go
index 7502c597..f31b75f7 100644
--- a/mail/mail_test.go
+++ b/mail/mail_test.go
@@ -7,7 +7,7 @@ package mail
 import (
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal/aetesting"
 	basepb "google.golang.org/appengine/internal/base"
diff --git a/memcache/memcache.go b/memcache/memcache.go
index 81751d70..4c8b9f06 100644
--- a/memcache/memcache.go
+++ b/memcache/memcache.go
@@ -36,7 +36,7 @@ import (
 	"errors"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal"
diff --git a/module/module.go b/module/module.go
index ffb3a643..cbba88b0 100644
--- a/module/module.go
+++ b/module/module.go
@@ -13,7 +13,7 @@ package module // import "google.golang.org/appengine/module"
 import (
 	"context"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 	pb "google.golang.org/appengine/internal/modules"
diff --git a/module/module_test.go b/module/module_test.go
index 73e8971d..7f665104 100644
--- a/module/module_test.go
+++ b/module/module_test.go
@@ -8,7 +8,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal/aetesting"
 	pb "google.golang.org/appengine/internal/modules"
diff --git a/remote_api/client.go b/remote_api/client.go
index 19dc9d04..9df48ed2 100644
--- a/remote_api/client.go
+++ b/remote_api/client.go
@@ -21,7 +21,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 	pb "google.golang.org/appengine/internal/remote_api"
diff --git a/remote_api/remote_api.go b/remote_api/remote_api.go
index 3d2880d6..c11bd015 100644
--- a/remote_api/remote_api.go
+++ b/remote_api/remote_api.go
@@ -15,7 +15,7 @@ import (
 	"net/http"
 	"strconv"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal"
diff --git a/runtime/runtime_test.go b/runtime/runtime_test.go
index c750115e..6a86745a 100644
--- a/runtime/runtime_test.go
+++ b/runtime/runtime_test.go
@@ -12,7 +12,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal/aetesting"
 	pb "google.golang.org/appengine/internal/system"
diff --git a/search/search.go b/search/search.go
index fd768084..8e8796c8 100644
--- a/search/search.go
+++ b/search/search.go
@@ -22,7 +22,7 @@ import (
 	"time"
 	"unicode/utf8"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal"
diff --git a/search/search_test.go b/search/search_test.go
index 0459cd74..df918cf2 100644
--- a/search/search_test.go
+++ b/search/search_test.go
@@ -12,7 +12,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal/aetesting"
diff --git a/socket/socket_classic.go b/socket/socket_classic.go
index 20e59405..971803cc 100644
--- a/socket/socket_classic.go
+++ b/socket/socket_classic.go
@@ -15,8 +15,8 @@ import (
 	"strconv"
 	"time"
 
-	"github.com/golang/protobuf/proto"
 	"google.golang.org/appengine/internal"
+	"google.golang.org/protobuf/proto"
 
 	pb "google.golang.org/appengine/internal/socket"
 )
diff --git a/taskqueue/taskqueue.go b/taskqueue/taskqueue.go
index 4bbe7316..e92141ce 100644
--- a/taskqueue/taskqueue.go
+++ b/taskqueue/taskqueue.go
@@ -25,7 +25,7 @@ import (
 	"strconv"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal"
diff --git a/urlfetch/urlfetch.go b/urlfetch/urlfetch.go
index 6c0d7241..1925a490 100644
--- a/urlfetch/urlfetch.go
+++ b/urlfetch/urlfetch.go
@@ -18,7 +18,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 	pb "google.golang.org/appengine/internal/urlfetch"
diff --git a/user/oauth.go b/user/oauth.go
index 32e9c49c..83f79e5e 100644
--- a/user/oauth.go
+++ b/user/oauth.go
@@ -30,10 +30,10 @@ func CurrentOAuth(c context.Context, scopes ...string) (*User, error) {
 		return nil, err
 	}
 	return &User{
-		Email:      *res.Email,
-		AuthDomain: *res.AuthDomain,
+		Email:      res.Email,
+		AuthDomain: res.AuthDomain,
 		Admin:      res.GetIsAdmin(),
-		ID:         *res.UserId,
+		ID:         res.UserId,
 		ClientID:   res.GetClientId(),
 	}, nil
 }
diff --git a/user/user.go b/user/user.go
index 361189d5..b1f1b902 100644
--- a/user/user.go
+++ b/user/user.go
@@ -9,7 +9,7 @@ import (
 	"context"
 	"strings"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 	pb "google.golang.org/appengine/internal/user"
@@ -54,7 +54,7 @@ func LoginURL(c context.Context, dest string) (string, error) {
 // LoginURLFederated is like LoginURL but accepts a user's OpenID identifier.
 func LoginURLFederated(c context.Context, dest, identity string) (string, error) {
 	req := &pb.CreateLoginURLRequest{
-		DestinationUrl: proto.String(dest),
+		DestinationUrl: dest,
 	}
 	if identity != "" {
 		req.FederatedIdentity = proto.String(identity)
@@ -63,20 +63,20 @@ func LoginURLFederated(c context.Context, dest, identity string) (string, error)
 	if err := internal.Call(c, "user", "CreateLoginURL", req, res); err != nil {
 		return "", err
 	}
-	return *res.LoginUrl, nil
+	return res.LoginUrl, nil
 }
 
 // LogoutURL returns a URL that, when visited, signs the user out,
 // then redirects the user to the URL specified by dest.
 func LogoutURL(c context.Context, dest string) (string, error) {
 	req := &pb.CreateLogoutURLRequest{
-		DestinationUrl: proto.String(dest),
+		DestinationUrl: dest,
 	}
 	res := &pb.CreateLogoutURLResponse{}
 	if err := internal.Call(c, "user", "CreateLogoutURL", req, res); err != nil {
 		return "", err
 	}
-	return *res.LogoutUrl, nil
+	return res.LogoutUrl, nil
 }
 
 func init() {
diff --git a/user/user_test.go b/user/user_test.go
index 78fd2fdf..2569402a 100644
--- a/user/user_test.go
+++ b/user/user_test.go
@@ -12,7 +12,7 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
 	"google.golang.org/appengine/internal/aetesting"
diff --git a/v2/appengine.go b/v2/appengine.go
index 1941d36d..80aec5b8 100644
--- a/v2/appengine.go
+++ b/v2/appengine.go
@@ -12,7 +12,7 @@ import (
 	"context"
 	"net/http"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 )
diff --git a/v2/blobstore/blobstore.go b/v2/blobstore/blobstore.go
index ee1ba897..c8782057 100644
--- a/v2/blobstore/blobstore.go
+++ b/v2/blobstore/blobstore.go
@@ -23,8 +23,8 @@ import (
 	"strings"
 	"time"
 
-	"github.com/golang/protobuf/proto"
 	"golang.org/x/text/encoding/htmlindex"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2"
 	"google.golang.org/appengine/v2/datastore"
diff --git a/v2/blobstore/read.go b/v2/blobstore/read.go
index 93524f28..73acb4c7 100644
--- a/v2/blobstore/read.go
+++ b/v2/blobstore/read.go
@@ -12,7 +12,7 @@ import (
 	"os"
 	"sync"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2"
 	"google.golang.org/appengine/v2/internal"
diff --git a/v2/datastore/datastore.go b/v2/datastore/datastore.go
index 47c95f12..16e99cf0 100644
--- a/v2/datastore/datastore.go
+++ b/v2/datastore/datastore.go
@@ -10,7 +10,7 @@ import (
 	"fmt"
 	"reflect"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2"
 	"google.golang.org/appengine/v2/internal"
diff --git a/v2/datastore/internal/cloudkey/cloudkey.go b/v2/datastore/internal/cloudkey/cloudkey.go
index 9e752375..ff9e9587 100644
--- a/v2/datastore/internal/cloudkey/cloudkey.go
+++ b/v2/datastore/internal/cloudkey/cloudkey.go
@@ -12,8 +12,8 @@ import (
 	"errors"
 	"strings"
 
-	"github.com/golang/protobuf/proto"
 	cloudpb "google.golang.org/appengine/v2/datastore/internal/cloudpb"
+	"google.golang.org/protobuf/proto"
 )
 
 /////////////////////////////////////////////////////////////////////
diff --git a/v2/datastore/internal/cloudpb/entity.pb.go b/v2/datastore/internal/cloudpb/entity.pb.go
index af8195f3..2350969f 100644
--- a/v2/datastore/internal/cloudpb/entity.pb.go
+++ b/v2/datastore/internal/cloudpb/entity.pb.go
@@ -10,7 +10,7 @@ package cloudpb
 import (
 	"fmt"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 )
 
 // A partition ID identifies a grouping of entities. The grouping is always
diff --git a/v2/datastore/key.go b/v2/datastore/key.go
index 30187862..32e5c872 100644
--- a/v2/datastore/key.go
+++ b/v2/datastore/key.go
@@ -14,7 +14,7 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 	pb "google.golang.org/appengine/v2/internal/datastore"
diff --git a/v2/datastore/load.go b/v2/datastore/load.go
index 8a90cfa0..43c1f69c 100644
--- a/v2/datastore/load.go
+++ b/v2/datastore/load.go
@@ -10,9 +10,9 @@ import (
 	"strings"
 	"time"
 
-	"github.com/golang/protobuf/proto"
 	"google.golang.org/appengine/v2"
 	pb "google.golang.org/appengine/v2/internal/datastore"
+	"google.golang.org/protobuf/proto"
 )
 
 var (
diff --git a/v2/datastore/load_test.go b/v2/datastore/load_test.go
index c481a768..561afd8c 100644
--- a/v2/datastore/load_test.go
+++ b/v2/datastore/load_test.go
@@ -8,8 +8,8 @@ import (
 	"reflect"
 	"testing"
 
-	proto "github.com/golang/protobuf/proto"
 	pb "google.golang.org/appengine/v2/internal/datastore"
+	proto "google.golang.org/protobuf/proto"
 )
 
 type Simple struct {
diff --git a/v2/datastore/query.go b/v2/datastore/query.go
index 89dc64ba..2641deec 100644
--- a/v2/datastore/query.go
+++ b/v2/datastore/query.go
@@ -13,7 +13,7 @@ import (
 	"reflect"
 	"strings"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 	pb "google.golang.org/appengine/v2/internal/datastore"
diff --git a/v2/datastore/query_test.go b/v2/datastore/query_test.go
index be0e0e7c..e702acf8 100644
--- a/v2/datastore/query_test.go
+++ b/v2/datastore/query_test.go
@@ -11,7 +11,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 	"google.golang.org/appengine/v2/internal/aetesting"
diff --git a/v2/datastore/save.go b/v2/datastore/save.go
index ce3ca3d3..b186a159 100644
--- a/v2/datastore/save.go
+++ b/v2/datastore/save.go
@@ -11,7 +11,7 @@ import (
 	"reflect"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2"
 	pb "google.golang.org/appengine/v2/internal/datastore"
diff --git a/v2/delay/delay_test.go b/v2/delay/delay_test.go
index 49542b74..91ec40df 100644
--- a/v2/delay/delay_test.go
+++ b/v2/delay/delay_test.go
@@ -17,7 +17,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 	"google.golang.org/appengine/v2/taskqueue"
diff --git a/xmpp/xmpp_test.go b/xmpp/xmpp_test.go
index c3030d36..2bca252f 100644
--- a/xmpp/xmpp_test.go
+++ b/xmpp/xmpp_test.go
@@ -9,7 +9,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal/aetesting"
@@ -18,14 +18,14 @@ import (
 
 func newPresenceResponse(isAvailable bool, presence pb.PresenceResponse_SHOW, valid bool) *pb.PresenceResponse {
 	return &pb.PresenceResponse{
-		IsAvailable: proto.Bool(isAvailable),
+		IsAvailable: isAvailable,
 		Presence:    presence.Enum(),
 		Valid:       proto.Bool(valid),
 	}
 }
 
 func setPresenceResponse(m *pb.PresenceResponse, isAvailable bool, presence pb.PresenceResponse_SHOW, valid bool) {
-	m.IsAvailable = &isAvailable
+	m.IsAvailable = isAvailable
 	m.Presence = presence.Enum()
 	m.Valid = &valid
 }

From 8ac12a69e05014465dfb97b6fe7ad62f116ee259 Mon Sep 17 00:00:00 2001
From: Anthony Carathimas <acarathimas@octolabs.io>
Date: Tue, 12 Mar 2024 15:16:35 -0400
Subject: [PATCH 2/5] everything builds now, just one test fails

---
 blobstore/blobstore.go                        |   10 +-
 blobstore/blobstore_test.go                   |    6 +-
 blobstore/read.go                             |    8 +-
 capability/capability.go                      |    2 +-
 channel/channel.go                            |    6 +-
 datastore/datastore.go                        |   22 +-
 datastore/internal/cloudpb/entity.pb.go       |  967 +++++++++-
 datastore/load.go                             |   21 +-
 datastore/load_test.go                        |  144 +-
 datastore/query.go                            |   30 +-
 datastore/query_test.go                       |   56 +-
 datastore/save.go                             |   28 +-
 image/image.go                                |    2 +-
 .../app_identity/app_identity_service.pb.go   |  984 ++++++++++
 internal/datastore/datastore_v3.pb.go         | 1695 ++++++++---------
 internal/datastore/datastore_v3.proto         |    2 +-
 log/log.go                                    |   36 +-
 log/log_test.go                               |   36 +-
 mail/mail.go                                  |   10 +-
 mail/mail_test.go                             |    8 +-
 memcache/memcache.go                          |   22 +-
 memcache/memcache_test.go                     |    4 +-
 module/module.go                              |   10 +-
 module/module_test.go                         |   10 +-
 remote_api/client.go                          |    7 +-
 remote_api/remote_api.go                      |   26 +-
 search/search.go                              |   28 +-
 search/search_test.go                         |   86 +-
 taskqueue/taskqueue.go                        |   40 +-
 taskqueue/taskqueue_test.go                   |   10 +-
 urlfetch/urlfetch.go                          |   16 +-
 user/oauth.go                                 |    2 +-
 user/user_test.go                             |    4 +-
 v2/internal/aetesting/fake.go                 |    2 +-
 v2/internal/api.go                            |    2 +-
 v2/internal/api_common.go                     |    2 +-
 v2/internal/api_test.go                       |    2 +-
 v2/internal/internal.go                       |    2 +-
 v2/internal/transaction.go                    |    2 +-
 v2/mail/mail.go                               |    2 +-
 v2/mail/mail_test.go                          |    2 +-
 v2/memcache/memcache.go                       |    2 +-
 v2/module/module.go                           |    2 +-
 v2/module/module_test.go                      |    2 +-
 v2/runtime/runtime_test.go                    |    2 +-
 v2/search/search.go                           |    2 +-
 v2/search/search_test.go                      |    2 +-
 v2/taskqueue/taskqueue.go                     |    2 +-
 v2/urlfetch/urlfetch.go                       |    2 +-
 v2/user/user.go                               |    2 +-
 v2/user/user_test.go                          |    2 +-
 xmpp/xmpp.go                                  |   12 +-
 52 files changed, 3173 insertions(+), 1213 deletions(-)
 create mode 100644 internal/app_identity/app_identity_service.pb.go

diff --git a/blobstore/blobstore.go b/blobstore/blobstore.go
index 4aa5fa7e..3e2af52e 100644
--- a/blobstore/blobstore.go
+++ b/blobstore/blobstore.go
@@ -24,8 +24,6 @@ import (
 	"time"
 
 	"golang.org/x/text/encoding/htmlindex"
-	"google.golang.org/protobuf/proto"
-
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/datastore"
 	"google.golang.org/appengine/internal"
@@ -100,7 +98,7 @@ func Send(response http.ResponseWriter, blobKey appengine.BlobKey) {
 // opts parameter may be nil.
 func UploadURL(c context.Context, successPath string, opts *UploadURLOptions) (*url.URL, error) {
 	req := &blobpb.CreateUploadURLRequest{
-		SuccessPath: proto.String(successPath),
+		SuccessPath: successPath,
 	}
 	if opts != nil {
 		if n := opts.MaxUploadBytes; n != 0 {
@@ -117,7 +115,7 @@ func UploadURL(c context.Context, successPath string, opts *UploadURLOptions) (*
 	if err := internal.Call(c, "blobstore", "CreateUploadURL", req, res); err != nil {
 		return nil, err
 	}
-	return url.Parse(*res.Url)
+	return url.Parse(res.Url)
 }
 
 // UploadURLOptions are the options to create an upload URL.
@@ -296,11 +294,11 @@ func NewReader(c context.Context, blobKey appengine.BlobKey) Reader {
 // The filename should be of the form "/gs/bucket_name/object_name".
 func BlobKeyForFile(c context.Context, filename string) (appengine.BlobKey, error) {
 	req := &blobpb.CreateEncodedGoogleStorageKeyRequest{
-		Filename: &filename,
+		Filename: filename,
 	}
 	res := &blobpb.CreateEncodedGoogleStorageKeyResponse{}
 	if err := internal.Call(c, "blobstore", "CreateEncodedGoogleStorageKey", req, res); err != nil {
 		return "", err
 	}
-	return appengine.BlobKey(*res.BlobKey), nil
+	return appengine.BlobKey(res.BlobKey), nil
 }
diff --git a/blobstore/blobstore_test.go b/blobstore/blobstore_test.go
index 4616211e..6e5859c7 100644
--- a/blobstore/blobstore_test.go
+++ b/blobstore/blobstore_test.go
@@ -40,9 +40,9 @@ func min(x, y int) int {
 }
 
 func fakeFetchData(req *pb.FetchDataRequest, res *pb.FetchDataResponse) error {
-	i0 := int(*req.StartIndex)
-	i1 := int(*req.EndIndex + 1) // Blobstore's end-indices are inclusive; Go's are exclusive.
-	bk := *req.BlobKey
+	i0 := int(req.StartIndex)
+	i1 := int(req.EndIndex + 1) // Blobstore's end-indices are inclusive; Go's are exclusive.
+	bk := req.BlobKey
 	if i := strings.Index(bk, "."); i != -1 {
 		// Strip everything past the ".".
 		bk = bk[:i]
diff --git a/blobstore/read.go b/blobstore/read.go
index 2dcc0843..2daf5752 100644
--- a/blobstore/read.go
+++ b/blobstore/read.go
@@ -12,8 +12,6 @@ import (
 	"os"
 	"sync"
 
-	"google.golang.org/protobuf/proto"
-
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal"
 
@@ -132,9 +130,9 @@ func (r *reader) Seek(offset int64, whence int) (ret int64, err error) {
 // the data is saved as r.buf.
 func (r *reader) fetch(off int64) error {
 	req := &blobpb.FetchDataRequest{
-		BlobKey:    proto.String(string(r.blobKey)),
-		StartIndex: proto.Int64(off),
-		EndIndex:   proto.Int64(off + readBufferSize - 1), // EndIndex is inclusive.
+		BlobKey:    string(r.blobKey),
+		StartIndex: off,
+		EndIndex:   off + readBufferSize - 1, // EndIndex is inclusive.
 	}
 	res := &blobpb.FetchDataResponse{}
 	if err := internal.Call(r.c, "blobstore", "FetchData", req, res); err != nil {
diff --git a/capability/capability.go b/capability/capability.go
index 448a28d1..acfbd59e 100644
--- a/capability/capability.go
+++ b/capability/capability.go
@@ -36,7 +36,7 @@ func Enabled(ctx context.Context, api, capability string) bool {
 	}
 
 	req := &pb.IsEnabledRequest{
-		Package:    &api,
+		Package:    api,
 		Capability: []string{capability},
 	}
 	res := &pb.IsEnabledResponse{}
diff --git a/channel/channel.go b/channel/channel.go
index 40edd324..cc1d3288 100644
--- a/channel/channel.go
+++ b/channel/channel.go
@@ -38,7 +38,7 @@ import (
 // The clientID is an application-provided string used to identify the client.
 func Create(c context.Context, clientID string) (token string, err error) {
 	req := &pb.CreateChannelRequest{
-		ApplicationKey: &clientID,
+		ApplicationKey: clientID,
 	}
 	resp := &pb.CreateChannelResponse{}
 	err = internal.Call(c, service, "CreateChannel", req, resp)
@@ -49,8 +49,8 @@ func Create(c context.Context, clientID string) (token string, err error) {
 // Send sends a message on the channel associated with clientID.
 func Send(c context.Context, clientID, message string) error {
 	req := &pb.SendMessageRequest{
-		ApplicationKey: &clientID,
-		Message:        &message,
+		ApplicationKey: clientID,
+		Message:        message,
 	}
 	resp := &basepb.VoidProto{}
 	return remapError(internal.Call(c, service, "SendChannelMessage", req, resp))
diff --git a/datastore/datastore.go b/datastore/datastore.go
index 76a25520..bc87d3e3 100644
--- a/datastore/datastore.go
+++ b/datastore/datastore.go
@@ -74,11 +74,11 @@ func keyToProto(defaultAppID string, k *Key) *pb.Reference {
 	for i := k; i != nil; i = i.parent {
 		n++
 	}
-	e := make([]*pb.Path_Element, n)
+	e := make([]*pb.Path_ElementType, n)
 	for i := k; i != nil; i = i.parent {
 		n--
-		e[n] = &pb.Path_Element{
-			Type: &i.kind,
+		e[n] = &pb.Path_ElementType{
+			Type: i.kind,
 		}
 		// At most one of {Name,Id} should be set.
 		// Neither will be set for incomplete keys.
@@ -93,7 +93,7 @@ func keyToProto(defaultAppID string, k *Key) *pb.Reference {
 		namespace = proto.String(k.namespace)
 	}
 	return &pb.Reference{
-		App:       proto.String(appID),
+		App:       appID,
 		NameSpace: namespace,
 		Path: &pb.Path{
 			Element: e,
@@ -138,10 +138,10 @@ func multiValid(key []*Key) error {
 
 // referenceValueToKey is the same as protoToKey except the input is a
 // PropertyValue_ReferenceValue instead of a Reference.
-func referenceValueToKey(r *pb.PropertyValue_ReferenceValue) (k *Key, err error) {
+func referenceValueToKey(r *pb.PropertyValue_ReferenceValueType) (k *Key, err error) {
 	appID := r.GetApp()
 	namespace := r.GetNameSpace()
-	for _, e := range r.Pathelement {
+	for _, e := range r.PathElement {
 		k = &Key{
 			kind:      e.GetType(),
 			stringID:  e.GetName(),
@@ -159,20 +159,20 @@ func referenceValueToKey(r *pb.PropertyValue_ReferenceValue) (k *Key, err error)
 
 // keyToReferenceValue is the same as keyToProto except the output is a
 // PropertyValue_ReferenceValue instead of a Reference.
-func keyToReferenceValue(defaultAppID string, k *Key) *pb.PropertyValue_ReferenceValue {
+func keyToReferenceValue(defaultAppID string, k *Key) *pb.PropertyValue_ReferenceValueType {
 	ref := keyToProto(defaultAppID, k)
-	pe := make([]*pb.PropertyValue_ReferenceValue_PathElement, len(ref.Path.Element))
+	pe := make([]*pb.PropertyValue_ReferenceValueType_PathElementType, len(ref.Path.Element))
 	for i, e := range ref.Path.Element {
-		pe[i] = &pb.PropertyValue_ReferenceValue_PathElement{
+		pe[i] = &pb.PropertyValue_ReferenceValueType_PathElementType{
 			Type: e.Type,
 			Id:   e.Id,
 			Name: e.Name,
 		}
 	}
-	return &pb.PropertyValue_ReferenceValue{
+	return &pb.PropertyValue_ReferenceValueType{
 		App:         ref.App,
 		NameSpace:   ref.NameSpace,
-		Pathelement: pe,
+		PathElement: pe,
 	}
 }
 
diff --git a/datastore/internal/cloudpb/entity.pb.go b/datastore/internal/cloudpb/entity.pb.go
index 2350969f..f97880b6 100644
--- a/datastore/internal/cloudpb/entity.pb.go
+++ b/datastore/internal/cloudpb/entity.pb.go
@@ -1,3 +1,956 @@
+// Copyright 2023 Google LLC
+//
+// 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.26.0
+// 	protoc        v3.21.9
+// source: google/datastore/v1/entity.proto
+
+package datastore
+
+import (
+	reflect "reflect"
+	sync "sync"
+
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	structpb "google.golang.org/protobuf/types/known/structpb"
+	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+)
+
+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)
+)
+
+// A partition ID identifies a grouping of entities. The grouping is always
+// by project and namespace, however the namespace ID may be empty.
+//
+// A partition ID contains several dimensions:
+// project ID and namespace ID.
+//
+// Partition dimensions:
+//
+// - May be `""`.
+// - Must be valid UTF-8 bytes.
+// - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
+// If the value of any dimension matches regex `__.*__`, the partition is
+// reserved/read-only.
+// A reserved/read-only partition ID is forbidden in certain documented
+// contexts.
+//
+// Foreign partition IDs (in which the project ID does
+// not match the context project ID ) are discouraged.
+// Reads and writes of foreign partition IDs may fail if the project is not in
+// an active state.
+type PartitionId struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The ID of the project to which the entities belong.
+	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
+	// If not empty, the ID of the database to which the entities
+	// belong.
+	DatabaseId string `protobuf:"bytes,3,opt,name=database_id,json=databaseId,proto3" json:"database_id,omitempty"`
+	// If not empty, the ID of the namespace to which the entities belong.
+	NamespaceId string `protobuf:"bytes,4,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"`
+}
+
+func (x *PartitionId) Reset() {
+	*x = PartitionId{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_google_datastore_v1_entity_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PartitionId) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PartitionId) ProtoMessage() {}
+
+func (x *PartitionId) ProtoReflect() protoreflect.Message {
+	mi := &file_google_datastore_v1_entity_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 PartitionId.ProtoReflect.Descriptor instead.
+func (*PartitionId) Descriptor() ([]byte, []int) {
+	return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *PartitionId) GetProjectId() string {
+	if x != nil {
+		return x.ProjectId
+	}
+	return ""
+}
+
+func (x *PartitionId) GetDatabaseId() string {
+	if x != nil {
+		return x.DatabaseId
+	}
+	return ""
+}
+
+func (x *PartitionId) GetNamespaceId() string {
+	if x != nil {
+		return x.NamespaceId
+	}
+	return ""
+}
+
+// A unique identifier for an entity.
+// If a key's partition ID or any of its path kinds or names are
+// reserved/read-only, the key is reserved/read-only.
+// A reserved/read-only key is forbidden in certain documented contexts.
+type Key struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Entities are partitioned into subsets, currently identified by a project
+	// ID and namespace ID.
+	// Queries are scoped to a single partition.
+	PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId,proto3" json:"partition_id,omitempty"`
+	// The entity path.
+	// An entity path consists of one or more elements composed of a kind and a
+	// string or numerical identifier, which identify entities. The first
+	// element identifies a _root entity_, the second element identifies
+	// a _child_ of the root entity, the third element identifies a child of the
+	// second entity, and so forth. The entities identified by all prefixes of
+	// the path are called the element's _ancestors_.
+	//
+	// An entity path is always fully complete: *all* of the entity's ancestors
+	// are required to be in the path along with the entity identifier itself.
+	// The only exception is that in some documented cases, the identifier in the
+	// last path element (for the entity) itself may be omitted. For example,
+	// the last path element of the key of `Mutation.insert` may have no
+	// identifier.
+	//
+	// A path can never be empty, and a path can have at most 100 elements.
+	Path []*Key_PathElement `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"`
+}
+
+func (x *Key) Reset() {
+	*x = Key{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_google_datastore_v1_entity_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Key) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Key) ProtoMessage() {}
+
+func (x *Key) ProtoReflect() protoreflect.Message {
+	mi := &file_google_datastore_v1_entity_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 Key.ProtoReflect.Descriptor instead.
+func (*Key) Descriptor() ([]byte, []int) {
+	return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Key) GetPartitionId() *PartitionId {
+	if x != nil {
+		return x.PartitionId
+	}
+	return nil
+}
+
+func (x *Key) GetPath() []*Key_PathElement {
+	if x != nil {
+		return x.Path
+	}
+	return nil
+}
+
+// An array value.
+type ArrayValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Values in the array.
+	// The order of values in an array is preserved as long as all values have
+	// identical settings for 'exclude_from_indexes'.
+	Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
+}
+
+func (x *ArrayValue) Reset() {
+	*x = ArrayValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_google_datastore_v1_entity_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ArrayValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ArrayValue) ProtoMessage() {}
+
+func (x *ArrayValue) ProtoReflect() protoreflect.Message {
+	mi := &file_google_datastore_v1_entity_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 ArrayValue.ProtoReflect.Descriptor instead.
+func (*ArrayValue) Descriptor() ([]byte, []int) {
+	return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *ArrayValue) GetValues() []*Value {
+	if x != nil {
+		return x.Values
+	}
+	return nil
+}
+
+// A message that can hold any of the supported value types and associated
+// metadata.
+type Value struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Must have a value set.
+	//
+	// Types that are assignable to ValueType:
+	//
+	//	*Value_NullValue
+	//	*Value_BooleanValue
+	//	*Value_IntegerValue
+	//	*Value_DoubleValue
+	//	*Value_TimestampValue
+	//	*Value_KeyValue
+	//	*Value_StringValue
+	//	*Value_BlobValue
+	//	*Value_GeoPointValue
+	//	*Value_EntityValue
+	//	*Value_ArrayValue
+	ValueType isValue_ValueType `protobuf_oneof:"value_type"`
+	// The `meaning` field should only be populated for backwards compatibility.
+	Meaning int32 `protobuf:"varint,14,opt,name=meaning,proto3" json:"meaning,omitempty"`
+	// If the value should be excluded from all indexes including those defined
+	// explicitly.
+	ExcludeFromIndexes bool `protobuf:"varint,19,opt,name=exclude_from_indexes,json=excludeFromIndexes,proto3" json:"exclude_from_indexes,omitempty"`
+}
+
+func (x *Value) Reset() {
+	*x = Value{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_google_datastore_v1_entity_proto_msgTypes[3]
+		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_google_datastore_v1_entity_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 Value.ProtoReflect.Descriptor instead.
+func (*Value) Descriptor() ([]byte, []int) {
+	return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{3}
+}
+
+func (m *Value) GetValueType() isValue_ValueType {
+	if m != nil {
+		return m.ValueType
+	}
+	return nil
+}
+
+func (x *Value) GetNullValue() structpb.NullValue {
+	if x, ok := x.GetValueType().(*Value_NullValue); ok {
+		return x.NullValue
+	}
+	return structpb.NullValue_NULL_VALUE
+}
+
+func (x *Value) GetBooleanValue() bool {
+	if x, ok := x.GetValueType().(*Value_BooleanValue); ok {
+		return x.BooleanValue
+	}
+	return false
+}
+
+func (x *Value) GetIntegerValue() int64 {
+	if x, ok := x.GetValueType().(*Value_IntegerValue); ok {
+		return x.IntegerValue
+	}
+	return 0
+}
+
+func (x *Value) GetDoubleValue() float64 {
+	if x, ok := x.GetValueType().(*Value_DoubleValue); ok {
+		return x.DoubleValue
+	}
+	return 0
+}
+
+func (x *Value) GetTimestampValue() *timestamppb.Timestamp {
+	if x, ok := x.GetValueType().(*Value_TimestampValue); ok {
+		return x.TimestampValue
+	}
+	return nil
+}
+
+func (x *Value) GetKeyValue() *Key {
+	if x, ok := x.GetValueType().(*Value_KeyValue); ok {
+		return x.KeyValue
+	}
+	return nil
+}
+
+func (x *Value) GetStringValue() string {
+	if x, ok := x.GetValueType().(*Value_StringValue); ok {
+		return x.StringValue
+	}
+	return ""
+}
+
+func (x *Value) GetBlobValue() []byte {
+	if x, ok := x.GetValueType().(*Value_BlobValue); ok {
+		return x.BlobValue
+	}
+	return nil
+}
+
+func (x *Value) GetEntityValue() *Entity {
+	if x, ok := x.GetValueType().(*Value_EntityValue); ok {
+		return x.EntityValue
+	}
+	return nil
+}
+
+func (x *Value) GetArrayValue() *ArrayValue {
+	if x, ok := x.GetValueType().(*Value_ArrayValue); ok {
+		return x.ArrayValue
+	}
+	return nil
+}
+
+func (x *Value) GetMeaning() int32 {
+	if x != nil {
+		return x.Meaning
+	}
+	return 0
+}
+
+func (x *Value) GetExcludeFromIndexes() bool {
+	if x != nil {
+		return x.ExcludeFromIndexes
+	}
+	return false
+}
+
+type isValue_ValueType interface {
+	isValue_ValueType()
+}
+
+type Value_NullValue struct {
+	// A null value.
+	NullValue structpb.NullValue `protobuf:"varint,11,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof"`
+}
+
+type Value_BooleanValue struct {
+	// A boolean value.
+	BooleanValue bool `protobuf:"varint,1,opt,name=boolean_value,json=booleanValue,proto3,oneof"`
+}
+
+type Value_IntegerValue struct {
+	// An integer value.
+	IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,proto3,oneof"`
+}
+
+type Value_DoubleValue struct {
+	// A double value.
+	DoubleValue float64 `protobuf:"fixed64,3,opt,name=double_value,json=doubleValue,proto3,oneof"`
+}
+
+type Value_TimestampValue struct {
+	// A timestamp value.
+	// When stored in the Datastore, precise only to microseconds;
+	// any additional precision is rounded down.
+	TimestampValue *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=timestamp_value,json=timestampValue,proto3,oneof"`
+}
+
+type Value_KeyValue struct {
+	// A key value.
+	KeyValue *Key `protobuf:"bytes,5,opt,name=key_value,json=keyValue,proto3,oneof"`
+}
+
+type Value_StringValue struct {
+	// A UTF-8 encoded string value.
+	// When `exclude_from_indexes` is false (it is indexed) , may have at most
+	// 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes.
+	StringValue string `protobuf:"bytes,17,opt,name=string_value,json=stringValue,proto3,oneof"`
+}
+
+type Value_BlobValue struct {
+	// A blob value.
+	// May have at most 1,000,000 bytes.
+	// When `exclude_from_indexes` is false, may have at most 1500 bytes.
+	// In JSON requests, must be base64-encoded.
+	BlobValue []byte `protobuf:"bytes,18,opt,name=blob_value,json=blobValue,proto3,oneof"`
+}
+
+type Value_EntityValue struct {
+	// An entity value.
+	//
+	// - May have no key.
+	// - May have a key with an incomplete key path.
+	// - May have a reserved/read-only key.
+	EntityValue *Entity `protobuf:"bytes,6,opt,name=entity_value,json=entityValue,proto3,oneof"`
+}
+
+type Value_ArrayValue struct {
+	// An array value.
+	// Cannot contain another array value.
+	// A `Value` instance that sets field `array_value` must not set fields
+	// `meaning` or `exclude_from_indexes`.
+	ArrayValue *ArrayValue `protobuf:"bytes,9,opt,name=array_value,json=arrayValue,proto3,oneof"`
+}
+
+func (*Value_NullValue) isValue_ValueType() {}
+
+func (*Value_BooleanValue) isValue_ValueType() {}
+
+func (*Value_IntegerValue) isValue_ValueType() {}
+
+func (*Value_DoubleValue) isValue_ValueType() {}
+
+func (*Value_TimestampValue) isValue_ValueType() {}
+
+func (*Value_KeyValue) isValue_ValueType() {}
+
+func (*Value_StringValue) isValue_ValueType() {}
+
+func (*Value_BlobValue) isValue_ValueType() {}
+
+func (*Value_EntityValue) isValue_ValueType() {}
+
+func (*Value_ArrayValue) isValue_ValueType() {}
+
+// A Datastore data object.
+//
+// An entity is limited to 1 megabyte when stored. That _roughly_
+// corresponds to a limit of 1 megabyte for the serialized form of this
+// message.
+type Entity struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The entity's key.
+	//
+	// An entity must have a key, unless otherwise documented (for example,
+	// an entity in `Value.entity_value` may have no key).
+	// An entity's kind is its key path's last element's kind,
+	// or null if it has no key.
+	Key *Key `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	// The entity's properties.
+	// The map's keys are property names.
+	// A property name matching regex `__.*__` is reserved.
+	// A reserved property name is forbidden in certain documented contexts.
+	// The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+	// be empty.
+	Properties map[string]*Value `protobuf:"bytes,3,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *Entity) Reset() {
+	*x = Entity{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_google_datastore_v1_entity_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Entity) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Entity) ProtoMessage() {}
+
+func (x *Entity) ProtoReflect() protoreflect.Message {
+	mi := &file_google_datastore_v1_entity_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 Entity.ProtoReflect.Descriptor instead.
+func (*Entity) Descriptor() ([]byte, []int) {
+	return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *Entity) GetKey() *Key {
+	if x != nil {
+		return x.Key
+	}
+	return nil
+}
+
+func (x *Entity) GetProperties() map[string]*Value {
+	if x != nil {
+		return x.Properties
+	}
+	return nil
+}
+
+// A (kind, ID/name) pair used to construct a key path.
+//
+// If either name or ID is set, the element is complete.
+// If neither is set, the element is incomplete.
+type Key_PathElement struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The kind of the entity.
+	//
+	// A kind matching regex `__.*__` is reserved/read-only.
+	// A kind must not contain more than 1500 bytes when UTF-8 encoded.
+	// Cannot be `""`.
+	//
+	// Must be valid UTF-8 bytes. Legacy values that are not valid UTF-8 are
+	// encoded as `__bytes<X>__` where `<X>` is the base-64 encoding of the
+	// bytes.
+	Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
+	// The type of ID.
+	//
+	// Types that are assignable to IdType:
+	//
+	//	*Key_PathElement_Id
+	//	*Key_PathElement_Name
+	IdType isKey_PathElement_IdType `protobuf_oneof:"id_type"`
+}
+
+func (x *Key_PathElement) Reset() {
+	*x = Key_PathElement{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_google_datastore_v1_entity_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Key_PathElement) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Key_PathElement) ProtoMessage() {}
+
+func (x *Key_PathElement) ProtoReflect() protoreflect.Message {
+	mi := &file_google_datastore_v1_entity_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 Key_PathElement.ProtoReflect.Descriptor instead.
+func (*Key_PathElement) Descriptor() ([]byte, []int) {
+	return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{1, 0}
+}
+
+func (x *Key_PathElement) GetKind() string {
+	if x != nil {
+		return x.Kind
+	}
+	return ""
+}
+
+func (m *Key_PathElement) GetIdType() isKey_PathElement_IdType {
+	if m != nil {
+		return m.IdType
+	}
+	return nil
+}
+
+func (x *Key_PathElement) GetId() int64 {
+	if x, ok := x.GetIdType().(*Key_PathElement_Id); ok {
+		return x.Id
+	}
+	return 0
+}
+
+func (x *Key_PathElement) GetName() string {
+	if x, ok := x.GetIdType().(*Key_PathElement_Name); ok {
+		return x.Name
+	}
+	return ""
+}
+
+type isKey_PathElement_IdType interface {
+	isKey_PathElement_IdType()
+}
+
+type Key_PathElement_Id struct {
+	// The auto-allocated ID of the entity.
+	//
+	// Never equal to zero. Values less than zero are discouraged and may not
+	// be supported in the future.
+	Id int64 `protobuf:"varint,2,opt,name=id,proto3,oneof"`
+}
+
+type Key_PathElement_Name struct {
+	// The name of the entity.
+	//
+	// A name matching regex `__.*__` is reserved/read-only.
+	// A name must not be more than 1500 bytes when UTF-8 encoded.
+	// Cannot be `""`.
+	//
+	// Must be valid UTF-8 bytes. Legacy values that are not valid UTF-8 are
+	// encoded as `__bytes<X>__` where `<X>` is the base-64 encoding of the
+	// bytes.
+	Name string `protobuf:"bytes,3,opt,name=name,proto3,oneof"`
+}
+
+func (*Key_PathElement_Id) isKey_PathElement_IdType() {}
+
+func (*Key_PathElement_Name) isKey_PathElement_IdType() {}
+
+var File_google_datastore_v1_entity_proto protoreflect.FileDescriptor
+
+var file_google_datastore_v1_entity_proto_rawDesc = []byte{
+	0x0a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f,
+	0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73,
+	0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74,
+	0x79, 0x70, 0x65, 0x2f, 0x6c, 0x61, 0x74, 0x6c, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0x70, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12,
+	0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1f,
+	0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12,
+	0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+	0x49, 0x64, 0x22, 0xda, 0x01, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x0c, 0x70, 0x61,
+	0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74,
+	0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x49, 0x64, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12,
+	0x38, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65,
+	0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d,
+	0x65, 0x6e, 0x74, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x54, 0x0a, 0x0b, 0x50, 0x61, 0x74,
+	0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x02,
+	0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14,
+	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22,
+	0x40, 0x0a, 0x0a, 0x41, 0x72, 0x72, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a,
+	0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65,
+	0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x73, 0x22, 0x9c, 0x05, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6e,
+	0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6e,
+	0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x6c,
+	0x65, 0x61, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48,
+	0x00, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
+	0x25, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65,
+	0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b,
+	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x48, 0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64,
+	0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x48,
+	0x00, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x12,
+	0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x67, 0x65, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x61, 0x74, 0x4c, 0x6e, 0x67, 0x48,
+	0x00, 0x52, 0x0d, 0x67, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x12, 0x40, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74,
+	0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72,
+	0x72, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, 0x72, 0x61,
+	0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e,
+	0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67,
+	0x12, 0x30, 0x0a, 0x14, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d,
+	0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12,
+	0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x64, 0x65, 0x78,
+	0x65, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65,
+	0x22, 0xdc, 0x01, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
+	0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65,
+	0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76,
+	0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
+	0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72,
+	0x74, 0x69, 0x65, 0x73, 0x1a, 0x59, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69,
+	0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42,
+	0xbd, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64,
+	0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x45, 0x6e, 0x74,
+	0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65,
+	0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
+	0x73, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x64,
+	0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0xaa, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72,
+	0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c,
+	0x6f, 0x75, 0x64, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x56, 0x31,
+	0xea, 0x02, 0x1c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64,
+	0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62,
+	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_google_datastore_v1_entity_proto_rawDescOnce sync.Once
+	file_google_datastore_v1_entity_proto_rawDescData = file_google_datastore_v1_entity_proto_rawDesc
+)
+
+func file_google_datastore_v1_entity_proto_rawDescGZIP() []byte {
+	file_google_datastore_v1_entity_proto_rawDescOnce.Do(func() {
+		file_google_datastore_v1_entity_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_datastore_v1_entity_proto_rawDescData)
+	})
+	return file_google_datastore_v1_entity_proto_rawDescData
+}
+
+var file_google_datastore_v1_entity_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
+var file_google_datastore_v1_entity_proto_goTypes = []interface{}{
+	(*PartitionId)(nil),           // 0: google.datastore.v1.PartitionId
+	(*Key)(nil),                   // 1: google.datastore.v1.Key
+	(*ArrayValue)(nil),            // 2: google.datastore.v1.ArrayValue
+	(*Value)(nil),                 // 3: google.datastore.v1.Value
+	(*Entity)(nil),                // 4: google.datastore.v1.Entity
+	(*Key_PathElement)(nil),       // 5: google.datastore.v1.Key.PathElement
+	nil,                           // 6: google.datastore.v1.Entity.PropertiesEntry
+	(structpb.NullValue)(0),       // 7: google.protobuf.NullValue
+	(*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp
+}
+var file_google_datastore_v1_entity_proto_depIdxs = []int32{
+	0,  // 0: google.datastore.v1.Key.partition_id:type_name -> google.datastore.v1.PartitionId
+	5,  // 1: google.datastore.v1.Key.path:type_name -> google.datastore.v1.Key.PathElement
+	3,  // 2: google.datastore.v1.ArrayValue.values:type_name -> google.datastore.v1.Value
+	7,  // 3: google.datastore.v1.Value.null_value:type_name -> google.protobuf.NullValue
+	8,  // 4: google.datastore.v1.Value.timestamp_value:type_name -> google.protobuf.Timestamp
+	1,  // 5: google.datastore.v1.Value.key_value:type_name -> google.datastore.v1.Key
+	9,  // 6: google.datastore.v1.Value.geo_point_value:type_name -> google.type.LatLng
+	4,  // 7: google.datastore.v1.Value.entity_value:type_name -> google.datastore.v1.Entity
+	2,  // 8: google.datastore.v1.Value.array_value:type_name -> google.datastore.v1.ArrayValue
+	1,  // 9: google.datastore.v1.Entity.key:type_name -> google.datastore.v1.Key
+	6,  // 10: google.datastore.v1.Entity.properties:type_name -> google.datastore.v1.Entity.PropertiesEntry
+	3,  // 11: google.datastore.v1.Entity.PropertiesEntry.value:type_name -> google.datastore.v1.Value
+	12, // [12:12] is the sub-list for method output_type
+	12, // [12:12] is the sub-list for method input_type
+	12, // [12:12] is the sub-list for extension type_name
+	12, // [12:12] is the sub-list for extension extendee
+	0,  // [0:12] is the sub-list for field type_name
+}
+
+func init() { file_google_datastore_v1_entity_proto_init() }
+func file_google_datastore_v1_entity_proto_init() {
+	if File_google_datastore_v1_entity_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_google_datastore_v1_entity_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PartitionId); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_google_datastore_v1_entity_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Key); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_google_datastore_v1_entity_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ArrayValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_google_datastore_v1_entity_proto_msgTypes[3].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_google_datastore_v1_entity_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Entity); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_google_datastore_v1_entity_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Key_PathElement); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_google_datastore_v1_entity_proto_msgTypes[3].OneofWrappers = []interface{}{
+		(*Value_NullValue)(nil),
+		(*Value_BooleanValue)(nil),
+		(*Value_IntegerValue)(nil),
+		(*Value_DoubleValue)(nil),
+		(*Value_TimestampValue)(nil),
+		(*Value_KeyValue)(nil),
+		(*Value_StringValue)(nil),
+		(*Value_BlobValue)(nil),
+		(*Value_EntityValue)(nil),
+		(*Value_ArrayValue)(nil),
+	}
+	file_google_datastore_v1_entity_proto_msgTypes[5].OneofWrappers = []interface{}{
+		(*Key_PathElement_Id)(nil),
+		(*Key_PathElement_Name)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_google_datastore_v1_entity_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   7,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_google_datastore_v1_entity_proto_goTypes,
+		DependencyIndexes: file_google_datastore_v1_entity_proto_depIdxs,
+		MessageInfos:      file_google_datastore_v1_entity_proto_msgTypes,
+	}.Build()
+	File_google_datastore_v1_entity_proto = out.File
+	file_google_datastore_v1_entity_proto_rawDesc = nil
+	file_google_datastore_v1_entity_proto_goTypes = nil
+	file_google_datastore_v1_entity_proto_depIdxs = nil
+}
+
+/*
 // Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by the Apache 2.0
 // license that can be found in the LICENSE file.
@@ -10,6 +963,7 @@ package cloudpb
 import (
 	"fmt"
 
+	"google.golang.org/protobuf/encoding/prototext"
 	"google.golang.org/protobuf/proto"
 )
 
@@ -43,8 +997,18 @@ type PartitionId struct {
 	XXX_sizecache        int32    `json:"-"`
 }
 
+var (
+	compactProtoToTextString = prototext.MarshalOptions{
+		Multiline:    false,
+		Indent:       "",
+		EmitASCII:    false,
+		AllowPartial: false,
+		EmitUnknown:  false,
+	}
+)
+
 func (m *PartitionId) Reset()         { *m = PartitionId{} }
-func (m *PartitionId) String() string { return proto.CompactTextString(m) }
+func (m *PartitionId) String() string { return compactProtoToTextString.Format(m) }
 func (*PartitionId) ProtoMessage()    {}
 func (*PartitionId) Descriptor() ([]byte, []int) {
 	return fileDescriptor_entity_096a297364b049a5, []int{0}
@@ -342,3 +1306,4 @@ var fileDescriptor_entity_096a297364b049a5 = []byte{
 }
 
 var xxx_messageInfo_Key proto.InternalMessageInfo
+*/
\ No newline at end of file
diff --git a/datastore/load.go b/datastore/load.go
index 537b2933..a227e66c 100644
--- a/datastore/load.go
+++ b/datastore/load.go
@@ -375,6 +375,9 @@ func protoToEntity(src *pb.EntityProto) (*Entity, error) {
 // propValue returns a Go value that combines the raw PropertyValue with a
 // meaning. For example, an Int64Value with GD_WHEN becomes a time.Time.
 func propValue(v *pb.PropertyValue, m pb.Property_Meaning) (interface{}, error) {
+	if v == nil {
+		return nil, fmt.Errorf("datastore: nil PropertyValue")
+	}
 	switch {
 	case v.Int64Value != nil:
 		if m == pb.Property_GD_WHEN {
@@ -386,32 +389,32 @@ func propValue(v *pb.PropertyValue, m pb.Property_Meaning) (interface{}, error)
 		return *v.BooleanValue, nil
 	case v.StringValue != nil:
 		if m == pb.Property_BLOB {
-			return []byte(*v.StringValue), nil
+			return v.StringValue, nil
 		} else if m == pb.Property_BLOBKEY {
-			return appengine.BlobKey(*v.StringValue), nil
+			return appengine.BlobKey(v.StringValue), nil
 		} else if m == pb.Property_BYTESTRING {
-			return ByteString(*v.StringValue), nil
+			return ByteString(v.StringValue), nil
 		} else if m == pb.Property_ENTITY_PROTO {
 			var ent pb.EntityProto
-			err := proto.Unmarshal([]byte(*v.StringValue), &ent)
+			err := proto.Unmarshal(v.StringValue, &ent)
 			if err != nil {
 				return nil, err
 			}
 			return protoToEntity(&ent)
 		} else {
-			return *v.StringValue, nil
+			return string(v.StringValue), nil
 		}
 	case v.DoubleValue != nil:
 		return *v.DoubleValue, nil
-	case v.Referencevalue != nil:
-		key, err := referenceValueToKey(v.Referencevalue)
+	case v.ReferenceValue != nil:
+		key, err := referenceValueToKey(v.ReferenceValue)
 		if err != nil {
 			return nil, err
 		}
 		return key, nil
-	case v.Pointvalue != nil:
+	case v.PointValue != nil:
 		// NOTE: Strangely, latitude maps to X, longitude to Y.
-		return appengine.GeoPoint{Lat: v.Pointvalue.GetX(), Lng: v.Pointvalue.GetY()}, nil
+		return appengine.GeoPoint{Lat: v.PointValue.GetX(), Lng: v.PointValue.GetY()}, nil
 	}
 	return nil, nil
 }
diff --git a/datastore/load_test.go b/datastore/load_test.go
index fb31211f..56ad5d0a 100644
--- a/datastore/load_test.go
+++ b/datastore/load_test.go
@@ -95,13 +95,13 @@ func TestLoadEntityNestedLegacy(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name: &fieldNameX,
+						Name: fieldNameX,
 						Value: &pb.PropertyValue{
-							StringValue: &testString2,
+							StringValue: []byte(testString2),
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameADotI,
+						Name: fieldNameADotI,
 						Value: &pb.PropertyValue{
 							Int64Value: &testInt64,
 						},
@@ -119,7 +119,7 @@ func TestLoadEntityNestedLegacy(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name: &fieldNameAADotII,
+						Name: fieldNameAADotII,
 						Value: &pb.PropertyValue{
 							Int64Value: &testInt64,
 						},
@@ -136,13 +136,13 @@ func TestLoadEntityNestedLegacy(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name: &fieldNameX,
+						Name: fieldNameX,
 						Value: &pb.PropertyValue{
-							StringValue: &testString2,
+							StringValue: []byte(testString2),
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameI,
+						Name: fieldNameI,
 						Value: &pb.PropertyValue{
 							Int64Value: &testInt64,
 						},
@@ -160,9 +160,9 @@ func TestLoadEntityNestedLegacy(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name: &fieldNameADotBDotB,
+						Name: fieldNameADotBDotB,
 						Value: &pb.PropertyValue{
-							StringValue: &testString2,
+							StringValue: []byte(testString2),
 						},
 					},
 				},
@@ -179,27 +179,27 @@ func TestLoadEntityNestedLegacy(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name: &fieldNameI,
+						Name: fieldNameI,
 						Value: &pb.PropertyValue{
 							Int64Value: &testInt64,
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameS,
+						Name: fieldNameS,
 						Value: &pb.PropertyValue{
-							StringValue: &testString2,
+							StringValue: []byte(testString2),
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameSS,
+						Name: fieldNameSS,
 						Value: &pb.PropertyValue{
-							StringValue: &testString3,
+							StringValue: []byte(testString3),
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameX,
+						Name: fieldNameX,
 						Value: &pb.PropertyValue{
-							StringValue: &testString3,
+							StringValue: []byte(testString3),
 						},
 					},
 				},
@@ -269,11 +269,11 @@ func init() {
 		Key: keyToProto("", incompleteKey),
 		Property: []*pb.Property{
 			&pb.Property{
-				Name: &fieldNameI,
+				Name: fieldNameI,
 				Value: &pb.PropertyValue{
 					Int64Value: &testInt64,
 				},
-				Multiple: &FALSE,
+				Multiple: FALSE,
 			},
 		},
 		EntityGroup: &pb.Path{},
@@ -292,20 +292,20 @@ func init() {
 		Key: keyToProto("", incompleteKey),
 		Property: []*pb.Property{
 			&pb.Property{
-				Name:    &fieldNameA,
+				Name:    fieldNameA,
 				Meaning: &entityProtoMeaning,
 				Value: &pb.PropertyValue{
-					StringValue: &simpleEntityProto,
+					StringValue: []byte(simpleEntityProto),
 				},
-				Multiple: &FALSE,
+				Multiple: FALSE,
 			},
 			&pb.Property{
-				Name:    &fieldNameI,
+				Name:    fieldNameI,
 				Meaning: &entityProtoMeaning,
 				Value: &pb.PropertyValue{
 					Int64Value: &testInt64,
 				},
-				Multiple: &FALSE,
+				Multiple: FALSE,
 			},
 		},
 		EntityGroup: &pb.Path{},
@@ -321,18 +321,18 @@ func init() {
 		Key: keyToProto("", incompleteKey),
 		Property: []*pb.Property{
 			&pb.Property{
-				Name: &fieldNameS,
+				Name: fieldNameS,
 				Value: &pb.PropertyValue{
-					StringValue: &testString2,
+					StringValue: []byte(testString2),
 				},
-				Multiple: &FALSE,
+				Multiple: FALSE,
 			},
 			&pb.Property{
-				Name: &fieldNameSS,
+				Name: fieldNameSS,
 				Value: &pb.PropertyValue{
-					StringValue: &testString3,
+					StringValue: []byte(testString3),
 				},
-				Multiple: &FALSE,
+				Multiple: FALSE,
 			},
 		},
 		EntityGroup: &pb.Path{},
@@ -348,11 +348,11 @@ func init() {
 		Key: keyToProto("", incompleteKey),
 		Property: []*pb.Property{
 			&pb.Property{
-				Name: &fieldNameII,
+				Name: fieldNameII,
 				Value: &pb.PropertyValue{
 					Int64Value: &testInt64,
 				},
-				Multiple: &FALSE,
+				Multiple: FALSE,
 			},
 		},
 		EntityGroup: &pb.Path{},
@@ -370,11 +370,11 @@ func init() {
 		Key: keyToProto("", incompleteKey),
 		Property: []*pb.Property{
 			&pb.Property{
-				Name: &fieldNameBDotB,
+				Name: fieldNameBDotB,
 				Value: &pb.PropertyValue{
-					StringValue: &testString2,
+					StringValue: []byte(testString2),
 				},
-				Multiple: &FALSE,
+				Multiple: FALSE,
 			},
 		},
 		EntityGroup: &pb.Path{},
@@ -394,18 +394,18 @@ func init() {
 		Key: keyToProto("", testKey1a),
 		Property: []*pb.Property{
 			&pb.Property{
-				Name: &fieldNameX,
+				Name: fieldNameX,
 				Value: &pb.PropertyValue{
-					StringValue: &testString3,
+					StringValue: []byte(testString3),
 				},
-				Multiple: &FALSE,
+				Multiple: FALSE,
 			},
 			&pb.Property{
-				Name: &fieldNameI,
+				Name: fieldNameI,
 				Value: &pb.PropertyValue{
 					Int64Value: &testInt64,
 				},
-				Multiple: &FALSE,
+				Multiple: FALSE,
 			},
 		},
 		EntityGroup: &pb.Path{},
@@ -429,14 +429,14 @@ func TestLoadEntityNested(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name:    &fieldNameA,
+						Name:    fieldNameA,
 						Meaning: &entityProtoMeaning,
 						Value: &pb.PropertyValue{
-							StringValue: &simpleEntityProto,
+							StringValue: []byte(simpleEntityProto),
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameI,
+						Name: fieldNameI,
 						Value: &pb.PropertyValue{
 							Int64Value: &testInt64,
 						},
@@ -454,10 +454,10 @@ func TestLoadEntityNested(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name:    &fieldNameAA,
+						Name:    fieldNameAA,
 						Meaning: &entityProtoMeaning,
 						Value: &pb.PropertyValue{
-							StringValue: &simpleWithTagEntityProto,
+							StringValue: []byte(simpleWithTagEntityProto),
 						},
 					},
 				},
@@ -472,23 +472,23 @@ func TestLoadEntityNested(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name:    &fieldNameAA,
+						Name:    fieldNameAA,
 						Meaning: &entityProtoMeaning,
 						Value: &pb.PropertyValue{
-							StringValue: &nestedSimpleEntityProto,
+							StringValue: []byte(nestedSimpleEntityProto),
 						},
 					},
 					&pb.Property{
-						Name:    &fieldNameA,
+						Name:    fieldNameA,
 						Meaning: &entityProtoMeaning,
 						Value: &pb.PropertyValue{
-							StringValue: &simpleTwoFieldsEntityProto,
+							StringValue: []byte(simpleTwoFieldsEntityProto),
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameS,
+						Name: fieldNameS,
 						Value: &pb.PropertyValue{
-							StringValue: &testString3,
+							StringValue: []byte(testString3),
 						},
 					},
 				},
@@ -508,15 +508,15 @@ func TestLoadEntityNested(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name: &fieldNameI,
+						Name: fieldNameI,
 						Value: &pb.PropertyValue{
 							Int64Value: &testInt64,
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameX,
+						Name: fieldNameX,
 						Value: &pb.PropertyValue{
-							StringValue: &testString2,
+							StringValue: []byte(testString2),
 						},
 					},
 				},
@@ -532,19 +532,19 @@ func TestLoadEntityNested(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name:     &fieldNameA,
+						Name:     fieldNameA,
 						Meaning:  &entityProtoMeaning,
-						Multiple: &TRUE,
+						Multiple: TRUE,
 						Value: &pb.PropertyValue{
-							StringValue: &simpleEntityProto,
+							StringValue: []byte(simpleEntityProto),
 						},
 					},
 					&pb.Property{
-						Name:     &fieldNameA,
+						Name:     fieldNameA,
 						Meaning:  &entityProtoMeaning,
-						Multiple: &TRUE,
+						Multiple: TRUE,
 						Value: &pb.PropertyValue{
-							StringValue: &simpleEntityProto,
+							StringValue: []byte(simpleEntityProto),
 						},
 					},
 				},
@@ -559,27 +559,27 @@ func TestLoadEntityNested(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name: &fieldNameI,
+						Name: fieldNameI,
 						Value: &pb.PropertyValue{
 							Int64Value: &testInt64,
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameS,
+						Name: fieldNameS,
 						Value: &pb.PropertyValue{
-							StringValue: &testString2,
+							StringValue: []byte(testString2),
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameSS,
+						Name: fieldNameSS,
 						Value: &pb.PropertyValue{
-							StringValue: &testString3,
+							StringValue: []byte(testString3),
 						},
 					},
 					&pb.Property{
-						Name: &fieldNameX,
+						Name: fieldNameX,
 						Value: &pb.PropertyValue{
-							StringValue: &testString2,
+							StringValue: []byte(testString2),
 						},
 					},
 				},
@@ -596,10 +596,10 @@ func TestLoadEntityNested(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name:    &fieldNameA,
+						Name:    fieldNameA,
 						Meaning: &entityProtoMeaning,
 						Value: &pb.PropertyValue{
-							StringValue: &bDotBEntityProto,
+							StringValue: []byte(bDotBEntityProto),
 						},
 					},
 				},
@@ -616,16 +616,16 @@ func TestLoadEntityNested(t *testing.T) {
 				Key: keyToProto("some-app-id", testKey0),
 				Property: []*pb.Property{
 					&pb.Property{
-						Name: &fieldNameY,
+						Name: fieldNameY,
 						Value: &pb.PropertyValue{
-							StringValue: &testString2,
+							StringValue: []byte(testString2),
 						},
 					},
 					&pb.Property{
-						Name:    &fieldNameN,
+						Name:    fieldNameN,
 						Meaning: &entityProtoMeaning,
 						Value: &pb.PropertyValue{
-							StringValue: &withKeyEntityProto,
+							StringValue: []byte(withKeyEntityProto),
 						},
 					},
 				},
diff --git a/datastore/query.go b/datastore/query.go
index 74b809bc..df020711 100644
--- a/datastore/query.go
+++ b/datastore/query.go
@@ -29,12 +29,12 @@ const (
 	greaterThan
 )
 
-var operatorToProto = map[operator]*pb.Query_Filter_Operator{
-	lessThan:    pb.Query_Filter_LESS_THAN.Enum(),
-	lessEq:      pb.Query_Filter_LESS_THAN_OR_EQUAL.Enum(),
-	equal:       pb.Query_Filter_EQUAL.Enum(),
-	greaterEq:   pb.Query_Filter_GREATER_THAN_OR_EQUAL.Enum(),
-	greaterThan: pb.Query_Filter_GREATER_THAN.Enum(),
+var operatorToProto = map[operator]*pb.Query_FilterType_Operator{
+	lessThan:    pb.Query_FilterType_LESS_THAN.Enum(),
+	lessEq:      pb.Query_FilterType_LESS_THAN_OR_EQUAL.Enum(),
+	equal:       pb.Query_FilterType_EQUAL.Enum(),
+	greaterEq:   pb.Query_FilterType_GREATER_THAN_OR_EQUAL.Enum(),
+	greaterThan: pb.Query_FilterType_GREATER_THAN.Enum(),
 }
 
 // filter is a conditional filter on query results.
@@ -51,9 +51,9 @@ const (
 	descending
 )
 
-var sortDirectionToProto = map[sortDirection]*pb.Query_Order_Direction{
-	ascending:  pb.Query_Order_ASCENDING.Enum(),
-	descending: pb.Query_Order_DESCENDING.Enum(),
+var sortDirectionToProto = map[sortDirection]*pb.Query_OrderType_Direction{
+	ascending:  pb.Query_OrderType_ASCENDING.Enum(),
+	descending: pb.Query_OrderType_DESCENDING.Enum(),
 }
 
 // order is a sort order on query results.
@@ -297,7 +297,7 @@ func (q *Query) toProto(dst *pb.Query, appID string) error {
 		return errors.New("datastore: query cannot be both distinct and distinct-on")
 	}
 	dst.Reset()
-	dst.App = proto.String(appID)
+	dst.App = appID
 	if q.kind != "" {
 		dst.Kind = proto.String(q.kind)
 	}
@@ -328,11 +328,11 @@ func (q *Query) toProto(dst *pb.Query, appID string) error {
 		if errStr != "" {
 			return errors.New("datastore: bad query filter value type: " + errStr)
 		}
-		xf := &pb.Query_Filter{
-			Op:       operatorToProto[qf.Op],
+		xf := &pb.Query_FilterType{
+			Op:       *operatorToProto[qf.Op],
 			Property: []*pb.Property{p},
 		}
-		if xf.Op == nil {
+		if xf.Op == pb.Query_FilterType_NONE {
 			return errors.New("datastore: unknown query filter operator")
 		}
 		dst.Filter = append(dst.Filter, xf)
@@ -341,8 +341,8 @@ func (q *Query) toProto(dst *pb.Query, appID string) error {
 		if qo.FieldName == "" {
 			return errors.New("datastore: empty query order field name")
 		}
-		xo := &pb.Query_Order{
-			Property:  proto.String(qo.FieldName),
+		xo := &pb.Query_OrderType{
+			Property:  qo.FieldName,
 			Direction: sortDirectionToProto[qo.Direction],
 		}
 		if xo.Direction == nil {
diff --git a/datastore/query_test.go b/datastore/query_test.go
index f853fc11..5fb2fafb 100644
--- a/datastore/query_test.go
+++ b/datastore/query_test.go
@@ -20,21 +20,21 @@ import (
 
 var (
 	path1 = &pb.Path{
-		Element: []*pb.Path_Element{
+		Element: []*pb.Path_ElementType{
 			{
-				Type: proto.String("Gopher"),
+				Type: "Gopher",
 				Id:   proto.Int64(6),
 			},
 		},
 	}
 	path2 = &pb.Path{
-		Element: []*pb.Path_Element{
+		Element: []*pb.Path_ElementType{
 			{
-				Type: proto.String("Gopher"),
+				Type: "Gopher",
 				Id:   proto.Int64(6),
 			},
 			{
-				Type: proto.String("Gopher"),
+				Type: "Gopher",
 				Id:   proto.Int64(8),
 			},
 		},
@@ -43,7 +43,7 @@ var (
 
 func fakeRunQuery(in *pb.Query, out *pb.QueryResult) error {
 	expectedIn := &pb.Query{
-		App:     proto.String("dev~fake-app"),
+		App:     "dev~fake-app",
 		Kind:    proto.String("Gopher"),
 		Compile: proto.Bool(true),
 	}
@@ -54,20 +54,20 @@ func fakeRunQuery(in *pb.Query, out *pb.QueryResult) error {
 		Result: []*pb.EntityProto{
 			{
 				Key: &pb.Reference{
-					App:  proto.String("s~test-app"),
+					App:  "s~test-app",
 					Path: path1,
 				},
 				EntityGroup: path1,
 				Property: []*pb.Property{
 					{
 						Meaning: pb.Property_TEXT.Enum(),
-						Name:    proto.String("Name"),
+						Name:    "Name",
 						Value: &pb.PropertyValue{
-							StringValue: proto.String("George"),
+							StringValue: []byte("George"),
 						},
 					},
 					{
-						Name: proto.String("Height"),
+						Name: "Height",
 						Value: &pb.PropertyValue{
 							Int64Value: proto.Int64(32),
 						},
@@ -76,23 +76,23 @@ func fakeRunQuery(in *pb.Query, out *pb.QueryResult) error {
 			},
 			{
 				Key: &pb.Reference{
-					App:  proto.String("s~test-app"),
+					App:  "s~test-app",
 					Path: path2,
 				},
 				EntityGroup: path1, // ancestor is George
 				Property: []*pb.Property{
 					{
 						Meaning: pb.Property_TEXT.Enum(),
-						Name:    proto.String("Name"),
+						Name:    "Name",
 						Value: &pb.PropertyValue{
-							StringValue: proto.String("Rufus"),
+							StringValue: []byte("Rufus"),
 						},
 					},
 					// No height for Rufus.
 				},
 			},
 		},
-		MoreResults: proto.Bool(false),
+		MoreResults: false,
 	}
 	return nil
 }
@@ -467,32 +467,32 @@ func TestQueryToProto(t *testing.T) {
 			query: NewQuery("kind").Order("-I").Filter("I >", 17).Filter("U =", "Dave").Limit(7).Offset(42).BatchSize(5),
 			want: &pb.Query{
 				Kind: proto.String("kind"),
-				Filter: []*pb.Query_Filter{
+				Filter: []*pb.Query_FilterType{
 					{
-						Op: pb.Query_Filter_GREATER_THAN.Enum(),
+						Op: pb.Query_FilterType_GREATER_THAN,
 						Property: []*pb.Property{
 							{
-								Name:     proto.String("I"),
+								Name:     "I",
 								Value:    &pb.PropertyValue{Int64Value: proto.Int64(17)},
-								Multiple: proto.Bool(false),
+								Multiple: false,
 							},
 						},
 					},
 					{
-						Op: pb.Query_Filter_EQUAL.Enum(),
+						Op: pb.Query_FilterType_EQUAL,
 						Property: []*pb.Property{
 							{
-								Name:     proto.String("U"),
-								Value:    &pb.PropertyValue{StringValue: proto.String("Dave")},
-								Multiple: proto.Bool(false),
+								Name:     "U",
+								Value:    &pb.PropertyValue{StringValue: []byte("Dave")},
+								Multiple: false,
 							},
 						},
 					},
 				},
-				Order: []*pb.Query_Order{
+				Order: []*pb.Query_OrderType{
 					{
-						Property:  proto.String("I"),
-						Direction: pb.Query_Order_DESCENDING.Enum(),
+						Property:  "I",
+						Direction: pb.Query_OrderType_DESCENDING.Enum(),
 					},
 				},
 				Limit:  proto.Int32(7),
@@ -505,9 +505,9 @@ func TestQueryToProto(t *testing.T) {
 			query: NewQuery("").Ancestor(NewKey(c, "kind", "Mummy", 0, nil)),
 			want: &pb.Query{
 				Ancestor: &pb.Reference{
-					App: proto.String("dev~fake-app"),
+					App: "dev~fake-app",
 					Path: &pb.Path{
-						Element: []*pb.Path_Element{{Type: proto.String("kind"), Name: proto.String("Mummy")}},
+						Element: []*pb.Path_ElementType{{Type: "kind", Name: proto.String("Mummy")}},
 					},
 				},
 			},
@@ -583,7 +583,7 @@ func TestQueryToProto(t *testing.T) {
 			continue
 		}
 		// Fields that are common to all protos.
-		tt.want.App = proto.String("dev~fake-app")
+		tt.want.App = "dev~fake-app"
 		tt.want.Compile = proto.Bool(true)
 		if !proto.Equal(got, tt.want) {
 			t.Errorf("%s:\ngot  %v\nwant %v", tt.desc, got, tt.want)
diff --git a/datastore/save.go b/datastore/save.go
index 80873558..6bd231a9 100644
--- a/datastore/save.go
+++ b/datastore/save.go
@@ -48,13 +48,13 @@ func valueToProto(defaultAppID, name string, v reflect.Value, multiple bool) (p
 	case reflect.Bool:
 		pv.BooleanValue = proto.Bool(v.Bool())
 	case reflect.String:
-		pv.StringValue = proto.String(v.String())
+		pv.StringValue = v.Bytes()
 	case reflect.Float32, reflect.Float64:
 		pv.DoubleValue = proto.Float64(v.Float())
 	case reflect.Ptr:
 		if k, ok := v.Interface().(*Key); ok {
 			if k != nil {
-				pv.Referencevalue = keyToReferenceValue(defaultAppID, k)
+				pv.ReferenceValue = keyToReferenceValue(defaultAppID, k)
 			}
 		} else {
 			unsupported = true
@@ -71,13 +71,13 @@ func valueToProto(defaultAppID, name string, v reflect.Value, multiple bool) (p
 				return nil, "invalid GeoPoint value"
 			}
 			// NOTE: Strangely, latitude maps to X, longitude to Y.
-			pv.Pointvalue = &pb.PropertyValue_PointValue{X: &t.Lat, Y: &t.Lng}
+			pv.PointValue = &pb.PropertyValue_PointValueType{X: t.Lat, Y: t.Lng}
 		default:
 			unsupported = true
 		}
 	case reflect.Slice:
 		if b, ok := v.Interface().([]byte); ok {
-			pv.StringValue = proto.String(string(b))
+			pv.StringValue = b
 		} else {
 			// nvToProto should already catch slice values.
 			// If we get here, we have a slice of slice values.
@@ -90,9 +90,9 @@ func valueToProto(defaultAppID, name string, v reflect.Value, multiple bool) (p
 		return nil, "unsupported datastore value type: " + v.Type().String()
 	}
 	p = &pb.Property{
-		Name:     proto.String(name),
+		Name:     name,
 		Value:    &pv,
-		Multiple: proto.Bool(multiple),
+		Multiple: multiple,
 	}
 	if v.IsValid() {
 		switch v.Interface().(type) {
@@ -243,9 +243,9 @@ func propertiesToProto(defaultAppID string, key *Key, props []Property) (*pb.Ent
 		}
 
 		x := &pb.Property{
-			Name:     proto.String(p.Name),
+			Name:     p.Name,
 			Value:    new(pb.PropertyValue),
-			Multiple: proto.Bool(p.Multiple),
+			Multiple: p.Multiple,
 		}
 		switch v := p.Value.(type) {
 		case int64:
@@ -253,7 +253,7 @@ func propertiesToProto(defaultAppID string, key *Key, props []Property) (*pb.Ent
 		case bool:
 			x.Value.BooleanValue = proto.Bool(v)
 		case string:
-			x.Value.StringValue = proto.String(v)
+			x.Value.StringValue = []byte(v)
 			if p.NoIndex {
 				x.Meaning = pb.Property_TEXT.Enum()
 			}
@@ -261,7 +261,7 @@ func propertiesToProto(defaultAppID string, key *Key, props []Property) (*pb.Ent
 			x.Value.DoubleValue = proto.Float64(v)
 		case *Key:
 			if v != nil {
-				x.Value.Referencevalue = keyToReferenceValue(defaultAppID, v)
+				x.Value.ReferenceValue = keyToReferenceValue(defaultAppID, v)
 			}
 		case time.Time:
 			if v.Before(minTime) || v.After(maxTime) {
@@ -270,23 +270,23 @@ func propertiesToProto(defaultAppID string, key *Key, props []Property) (*pb.Ent
 			x.Value.Int64Value = proto.Int64(toUnixMicro(v))
 			x.Meaning = pb.Property_GD_WHEN.Enum()
 		case appengine.BlobKey:
-			x.Value.StringValue = proto.String(string(v))
+			x.Value.StringValue = []byte(v)
 			x.Meaning = pb.Property_BLOBKEY.Enum()
 		case appengine.GeoPoint:
 			if !v.Valid() {
 				return nil, fmt.Errorf("datastore: invalid GeoPoint value")
 			}
 			// NOTE: Strangely, latitude maps to X, longitude to Y.
-			x.Value.Pointvalue = &pb.PropertyValue_PointValue{X: &v.Lat, Y: &v.Lng}
+			x.Value.PointValue = &pb.PropertyValue_PointValueType{X: v.Lat, Y: v.Lng}
 			x.Meaning = pb.Property_GEORSS_POINT.Enum()
 		case []byte:
-			x.Value.StringValue = proto.String(string(v))
+			x.Value.StringValue = v
 			x.Meaning = pb.Property_BLOB.Enum()
 			if !p.NoIndex {
 				return nil, fmt.Errorf("datastore: cannot index a []byte valued Property with Name %q", p.Name)
 			}
 		case ByteString:
-			x.Value.StringValue = proto.String(string(v))
+			x.Value.StringValue = v
 			x.Meaning = pb.Property_BYTESTRING.Enum()
 		default:
 			if p.Value != nil {
diff --git a/image/image.go b/image/image.go
index fa028325..054ae619 100644
--- a/image/image.go
+++ b/image/image.go
@@ -55,7 +55,7 @@ func ServingURL(c context.Context, key appengine.BlobKey, opts *ServingURLOption
 // DeleteServingURL deletes the serving URL for an image.
 func DeleteServingURL(c context.Context, key appengine.BlobKey) error {
 	req := &pb.ImagesDeleteUrlBaseRequest{
-		BlobKey: (*string)(&key),
+		BlobKey: (string)(key),
 	}
 	res := &pb.ImagesDeleteUrlBaseResponse{}
 	return internal.Call(c, "images", "DeleteUrlBase", req, res)
diff --git a/internal/app_identity/app_identity_service.pb.go b/internal/app_identity/app_identity_service.pb.go
new file mode 100644
index 00000000..bab7e0dc
--- /dev/null
+++ b/internal/app_identity/app_identity_service.pb.go
@@ -0,0 +1,984 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.33.0
+// 	protoc        v4.25.3
+// source: app_identity_service.proto
+
+package app_identity
+
+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 AppIdentityServiceError_ErrorCode int32
+
+const (
+	AppIdentityServiceError_SUCCESS           AppIdentityServiceError_ErrorCode = 0
+	AppIdentityServiceError_UNKNOWN_SCOPE     AppIdentityServiceError_ErrorCode = 9
+	AppIdentityServiceError_BLOB_TOO_LARGE    AppIdentityServiceError_ErrorCode = 1000
+	AppIdentityServiceError_DEADLINE_EXCEEDED AppIdentityServiceError_ErrorCode = 1001
+	AppIdentityServiceError_NOT_A_VALID_APP   AppIdentityServiceError_ErrorCode = 1002
+	AppIdentityServiceError_UNKNOWN_ERROR     AppIdentityServiceError_ErrorCode = 1003
+	AppIdentityServiceError_NOT_ALLOWED       AppIdentityServiceError_ErrorCode = 1005
+	AppIdentityServiceError_NOT_IMPLEMENTED   AppIdentityServiceError_ErrorCode = 1006
+)
+
+// Enum value maps for AppIdentityServiceError_ErrorCode.
+var (
+	AppIdentityServiceError_ErrorCode_name = map[int32]string{
+		0:    "SUCCESS",
+		9:    "UNKNOWN_SCOPE",
+		1000: "BLOB_TOO_LARGE",
+		1001: "DEADLINE_EXCEEDED",
+		1002: "NOT_A_VALID_APP",
+		1003: "UNKNOWN_ERROR",
+		1005: "NOT_ALLOWED",
+		1006: "NOT_IMPLEMENTED",
+	}
+	AppIdentityServiceError_ErrorCode_value = map[string]int32{
+		"SUCCESS":           0,
+		"UNKNOWN_SCOPE":     9,
+		"BLOB_TOO_LARGE":    1000,
+		"DEADLINE_EXCEEDED": 1001,
+		"NOT_A_VALID_APP":   1002,
+		"UNKNOWN_ERROR":     1003,
+		"NOT_ALLOWED":       1005,
+		"NOT_IMPLEMENTED":   1006,
+	}
+)
+
+func (x AppIdentityServiceError_ErrorCode) Enum() *AppIdentityServiceError_ErrorCode {
+	p := new(AppIdentityServiceError_ErrorCode)
+	*p = x
+	return p
+}
+
+func (x AppIdentityServiceError_ErrorCode) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (AppIdentityServiceError_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_app_identity_service_proto_enumTypes[0].Descriptor()
+}
+
+func (AppIdentityServiceError_ErrorCode) Type() protoreflect.EnumType {
+	return &file_app_identity_service_proto_enumTypes[0]
+}
+
+func (x AppIdentityServiceError_ErrorCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use AppIdentityServiceError_ErrorCode.Descriptor instead.
+func (AppIdentityServiceError_ErrorCode) EnumDescriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{0, 0}
+}
+
+type AppIdentityServiceError struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *AppIdentityServiceError) Reset() {
+	*x = AppIdentityServiceError{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *AppIdentityServiceError) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AppIdentityServiceError) ProtoMessage() {}
+
+func (x *AppIdentityServiceError) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 AppIdentityServiceError.ProtoReflect.Descriptor instead.
+func (*AppIdentityServiceError) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{0}
+}
+
+type SignForAppRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	BytesToSign []byte `protobuf:"bytes,1,opt,name=bytes_to_sign,json=bytesToSign,proto3,oneof" json:"bytes_to_sign,omitempty"`
+}
+
+func (x *SignForAppRequest) Reset() {
+	*x = SignForAppRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SignForAppRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SignForAppRequest) ProtoMessage() {}
+
+func (x *SignForAppRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 SignForAppRequest.ProtoReflect.Descriptor instead.
+func (*SignForAppRequest) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *SignForAppRequest) GetBytesToSign() []byte {
+	if x != nil {
+		return x.BytesToSign
+	}
+	return nil
+}
+
+type SignForAppResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	KeyName        *string `protobuf:"bytes,1,opt,name=key_name,json=keyName,proto3,oneof" json:"key_name,omitempty"`
+	SignatureBytes []byte  `protobuf:"bytes,2,opt,name=signature_bytes,json=signatureBytes,proto3,oneof" json:"signature_bytes,omitempty"`
+}
+
+func (x *SignForAppResponse) Reset() {
+	*x = SignForAppResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SignForAppResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SignForAppResponse) ProtoMessage() {}
+
+func (x *SignForAppResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 SignForAppResponse.ProtoReflect.Descriptor instead.
+func (*SignForAppResponse) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *SignForAppResponse) GetKeyName() string {
+	if x != nil && x.KeyName != nil {
+		return *x.KeyName
+	}
+	return ""
+}
+
+func (x *SignForAppResponse) GetSignatureBytes() []byte {
+	if x != nil {
+		return x.SignatureBytes
+	}
+	return nil
+}
+
+type GetPublicCertificateForAppRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *GetPublicCertificateForAppRequest) Reset() {
+	*x = GetPublicCertificateForAppRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetPublicCertificateForAppRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetPublicCertificateForAppRequest) ProtoMessage() {}
+
+func (x *GetPublicCertificateForAppRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 GetPublicCertificateForAppRequest.ProtoReflect.Descriptor instead.
+func (*GetPublicCertificateForAppRequest) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{3}
+}
+
+type PublicCertificate struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	KeyName            *string `protobuf:"bytes,1,opt,name=key_name,json=keyName,proto3,oneof" json:"key_name,omitempty"`
+	X509CertificatePem *string `protobuf:"bytes,2,opt,name=x509_certificate_pem,json=x509CertificatePem,proto3,oneof" json:"x509_certificate_pem,omitempty"`
+}
+
+func (x *PublicCertificate) Reset() {
+	*x = PublicCertificate{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PublicCertificate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PublicCertificate) ProtoMessage() {}
+
+func (x *PublicCertificate) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 PublicCertificate.ProtoReflect.Descriptor instead.
+func (*PublicCertificate) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *PublicCertificate) GetKeyName() string {
+	if x != nil && x.KeyName != nil {
+		return *x.KeyName
+	}
+	return ""
+}
+
+func (x *PublicCertificate) GetX509CertificatePem() string {
+	if x != nil && x.X509CertificatePem != nil {
+		return *x.X509CertificatePem
+	}
+	return ""
+}
+
+type GetPublicCertificateForAppResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	PublicCertificateList      []*PublicCertificate `protobuf:"bytes,1,rep,name=public_certificate_list,json=publicCertificateList,proto3" json:"public_certificate_list,omitempty"`
+	MaxClientCacheTimeInSecond *int64               `protobuf:"varint,2,opt,name=max_client_cache_time_in_second,json=maxClientCacheTimeInSecond,proto3,oneof" json:"max_client_cache_time_in_second,omitempty"`
+}
+
+func (x *GetPublicCertificateForAppResponse) Reset() {
+	*x = GetPublicCertificateForAppResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetPublicCertificateForAppResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetPublicCertificateForAppResponse) ProtoMessage() {}
+
+func (x *GetPublicCertificateForAppResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 GetPublicCertificateForAppResponse.ProtoReflect.Descriptor instead.
+func (*GetPublicCertificateForAppResponse) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *GetPublicCertificateForAppResponse) GetPublicCertificateList() []*PublicCertificate {
+	if x != nil {
+		return x.PublicCertificateList
+	}
+	return nil
+}
+
+func (x *GetPublicCertificateForAppResponse) GetMaxClientCacheTimeInSecond() int64 {
+	if x != nil && x.MaxClientCacheTimeInSecond != nil {
+		return *x.MaxClientCacheTimeInSecond
+	}
+	return 0
+}
+
+type GetServiceAccountNameRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *GetServiceAccountNameRequest) Reset() {
+	*x = GetServiceAccountNameRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServiceAccountNameRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServiceAccountNameRequest) ProtoMessage() {}
+
+func (x *GetServiceAccountNameRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 GetServiceAccountNameRequest.ProtoReflect.Descriptor instead.
+func (*GetServiceAccountNameRequest) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{6}
+}
+
+type GetServiceAccountNameResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ServiceAccountName *string `protobuf:"bytes,1,opt,name=service_account_name,json=serviceAccountName,proto3,oneof" json:"service_account_name,omitempty"`
+}
+
+func (x *GetServiceAccountNameResponse) Reset() {
+	*x = GetServiceAccountNameResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServiceAccountNameResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServiceAccountNameResponse) ProtoMessage() {}
+
+func (x *GetServiceAccountNameResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 GetServiceAccountNameResponse.ProtoReflect.Descriptor instead.
+func (*GetServiceAccountNameResponse) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *GetServiceAccountNameResponse) GetServiceAccountName() string {
+	if x != nil && x.ServiceAccountName != nil {
+		return *x.ServiceAccountName
+	}
+	return ""
+}
+
+type GetAccessTokenRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Scope              []string `protobuf:"bytes,1,rep,name=scope,proto3" json:"scope,omitempty"`
+	ServiceAccountId   *int64   `protobuf:"varint,2,opt,name=service_account_id,json=serviceAccountId,proto3,oneof" json:"service_account_id,omitempty"`
+	ServiceAccountName *string  `protobuf:"bytes,3,opt,name=service_account_name,json=serviceAccountName,proto3,oneof" json:"service_account_name,omitempty"`
+}
+
+func (x *GetAccessTokenRequest) Reset() {
+	*x = GetAccessTokenRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetAccessTokenRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetAccessTokenRequest) ProtoMessage() {}
+
+func (x *GetAccessTokenRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 GetAccessTokenRequest.ProtoReflect.Descriptor instead.
+func (*GetAccessTokenRequest) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *GetAccessTokenRequest) GetScope() []string {
+	if x != nil {
+		return x.Scope
+	}
+	return nil
+}
+
+func (x *GetAccessTokenRequest) GetServiceAccountId() int64 {
+	if x != nil && x.ServiceAccountId != nil {
+		return *x.ServiceAccountId
+	}
+	return 0
+}
+
+func (x *GetAccessTokenRequest) GetServiceAccountName() string {
+	if x != nil && x.ServiceAccountName != nil {
+		return *x.ServiceAccountName
+	}
+	return ""
+}
+
+type GetAccessTokenResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AccessToken    *string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3,oneof" json:"access_token,omitempty"`
+	ExpirationTime *int64  `protobuf:"varint,2,opt,name=expiration_time,json=expirationTime,proto3,oneof" json:"expiration_time,omitempty"`
+}
+
+func (x *GetAccessTokenResponse) Reset() {
+	*x = GetAccessTokenResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetAccessTokenResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetAccessTokenResponse) ProtoMessage() {}
+
+func (x *GetAccessTokenResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 GetAccessTokenResponse.ProtoReflect.Descriptor instead.
+func (*GetAccessTokenResponse) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *GetAccessTokenResponse) GetAccessToken() string {
+	if x != nil && x.AccessToken != nil {
+		return *x.AccessToken
+	}
+	return ""
+}
+
+func (x *GetAccessTokenResponse) GetExpirationTime() int64 {
+	if x != nil && x.ExpirationTime != nil {
+		return *x.ExpirationTime
+	}
+	return 0
+}
+
+type GetDefaultGcsBucketNameRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *GetDefaultGcsBucketNameRequest) Reset() {
+	*x = GetDefaultGcsBucketNameRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetDefaultGcsBucketNameRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetDefaultGcsBucketNameRequest) ProtoMessage() {}
+
+func (x *GetDefaultGcsBucketNameRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 GetDefaultGcsBucketNameRequest.ProtoReflect.Descriptor instead.
+func (*GetDefaultGcsBucketNameRequest) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{10}
+}
+
+type GetDefaultGcsBucketNameResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	DefaultGcsBucketName *string `protobuf:"bytes,1,opt,name=default_gcs_bucket_name,json=defaultGcsBucketName,proto3,oneof" json:"default_gcs_bucket_name,omitempty"`
+}
+
+func (x *GetDefaultGcsBucketNameResponse) Reset() {
+	*x = GetDefaultGcsBucketNameResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_app_identity_service_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetDefaultGcsBucketNameResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetDefaultGcsBucketNameResponse) ProtoMessage() {}
+
+func (x *GetDefaultGcsBucketNameResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_app_identity_service_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 GetDefaultGcsBucketNameResponse.ProtoReflect.Descriptor instead.
+func (*GetDefaultGcsBucketNameResponse) Descriptor() ([]byte, []int) {
+	return file_app_identity_service_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *GetDefaultGcsBucketNameResponse) GetDefaultGcsBucketName() string {
+	if x != nil && x.DefaultGcsBucketName != nil {
+		return *x.DefaultGcsBucketName
+	}
+	return ""
+}
+
+var File_app_identity_service_proto protoreflect.FileDescriptor
+
+var file_app_identity_service_proto_rawDesc = []byte{
+	0x0a, 0x1a, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x17, 0x41, 0x70, 0x70, 0x49,
+	0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x72,
+	0x72, 0x6f, 0x72, 0x22, 0xaa, 0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64,
+	0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x11,
+	0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x10,
+	0x09, 0x12, 0x13, 0x0a, 0x0e, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x41,
+	0x52, 0x47, 0x45, 0x10, 0xe8, 0x07, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x49,
+	0x4e, 0x45, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0xe9, 0x07, 0x12, 0x14,
+	0x0a, 0x0f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, 0x50,
+	0x50, 0x10, 0xea, 0x07, 0x12, 0x12, 0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f,
+	0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0xeb, 0x07, 0x12, 0x10, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f,
+	0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x10, 0xed, 0x07, 0x12, 0x14, 0x0a, 0x0f, 0x4e, 0x4f,
+	0x54, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x45, 0x44, 0x10, 0xee, 0x07,
+	0x22, 0x4e, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x46, 0x6f, 0x72, 0x41, 0x70, 0x70, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74,
+	0x6f, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b,
+	0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x10,
+	0x0a, 0x0e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x67, 0x6e,
+	0x22, 0x83, 0x01, 0x0a, 0x12, 0x53, 0x69, 0x67, 0x6e, 0x46, 0x6f, 0x72, 0x41, 0x70, 0x70, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79,
+	0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x61,
+	0x74, 0x75, 0x72, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
+	0x48, 0x01, 0x52, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x79, 0x74,
+	0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
+	0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x23, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62,
+	0x6c, 0x69, 0x63, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x46, 0x6f,
+	0x72, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x11,
+	0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
+	0x65, 0x12, 0x1e, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01,
+	0x01, 0x12, 0x35, 0x0a, 0x14, 0x78, 0x35, 0x30, 0x39, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
+	0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x01, 0x52, 0x12, 0x78, 0x35, 0x30, 0x39, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
+	0x74, 0x65, 0x50, 0x65, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6b, 0x65, 0x79,
+	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x78, 0x35, 0x30, 0x39, 0x5f, 0x63,
+	0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x65, 0x6d, 0x22, 0xe8,
+	0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x65, 0x72, 0x74,
+	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x17, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f,
+	0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
+	0x63, 0x61, 0x74, 0x65, 0x52, 0x15, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x65, 0x72, 0x74,
+	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x1f, 0x6d,
+	0x61, 0x78, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f,
+	0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x1a, 0x6d, 0x61, 0x78, 0x43, 0x6c, 0x69, 0x65, 0x6e,
+	0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x53, 0x65, 0x63, 0x6f,
+	0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6c,
+	0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f,
+	0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61,
+	0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6f, 0x0a, 0x1d, 0x47, 0x65, 0x74,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61,
+	0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x14, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01,
+	0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63,
+	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x15, 0x47,
+	0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a,
+	0x14, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x12, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d,
+	0x65, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f,
+	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f,
+	0x6e, 0x61, 0x6d, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65,
+	0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x26, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54,
+	0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
+	0x48, 0x01, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69,
+	0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
+	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x47, 0x65,
+	0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65,
+	0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x79, 0x0a, 0x1f,
+	0x47, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x63, 0x73, 0x42, 0x75, 0x63,
+	0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x3a, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x67, 0x63, 0x73, 0x5f, 0x62,
+	0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x00, 0x52, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x63, 0x73, 0x42, 0x75,
+	0x63, 0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
+	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x67, 0x63, 0x73, 0x5f, 0x62, 0x75, 0x63, 0x6b,
+	0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f,
+	0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_app_identity_service_proto_rawDescOnce sync.Once
+	file_app_identity_service_proto_rawDescData = file_app_identity_service_proto_rawDesc
+)
+
+func file_app_identity_service_proto_rawDescGZIP() []byte {
+	file_app_identity_service_proto_rawDescOnce.Do(func() {
+		file_app_identity_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_identity_service_proto_rawDescData)
+	})
+	return file_app_identity_service_proto_rawDescData
+}
+
+var file_app_identity_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_app_identity_service_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
+var file_app_identity_service_proto_goTypes = []interface{}{
+	(AppIdentityServiceError_ErrorCode)(0),     // 0: appengine.AppIdentityServiceError.ErrorCode
+	(*AppIdentityServiceError)(nil),            // 1: appengine.AppIdentityServiceError
+	(*SignForAppRequest)(nil),                  // 2: appengine.SignForAppRequest
+	(*SignForAppResponse)(nil),                 // 3: appengine.SignForAppResponse
+	(*GetPublicCertificateForAppRequest)(nil),  // 4: appengine.GetPublicCertificateForAppRequest
+	(*PublicCertificate)(nil),                  // 5: appengine.PublicCertificate
+	(*GetPublicCertificateForAppResponse)(nil), // 6: appengine.GetPublicCertificateForAppResponse
+	(*GetServiceAccountNameRequest)(nil),       // 7: appengine.GetServiceAccountNameRequest
+	(*GetServiceAccountNameResponse)(nil),      // 8: appengine.GetServiceAccountNameResponse
+	(*GetAccessTokenRequest)(nil),              // 9: appengine.GetAccessTokenRequest
+	(*GetAccessTokenResponse)(nil),             // 10: appengine.GetAccessTokenResponse
+	(*GetDefaultGcsBucketNameRequest)(nil),     // 11: appengine.GetDefaultGcsBucketNameRequest
+	(*GetDefaultGcsBucketNameResponse)(nil),    // 12: appengine.GetDefaultGcsBucketNameResponse
+}
+var file_app_identity_service_proto_depIdxs = []int32{
+	5, // 0: appengine.GetPublicCertificateForAppResponse.public_certificate_list:type_name -> appengine.PublicCertificate
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
+
+func init() { file_app_identity_service_proto_init() }
+func file_app_identity_service_proto_init() {
+	if File_app_identity_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_app_identity_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AppIdentityServiceError); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SignForAppRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SignForAppResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetPublicCertificateForAppRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PublicCertificate); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetPublicCertificateForAppResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetServiceAccountNameRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetServiceAccountNameResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetAccessTokenRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetAccessTokenResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetDefaultGcsBucketNameRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_app_identity_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetDefaultGcsBucketNameResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_app_identity_service_proto_msgTypes[1].OneofWrappers = []interface{}{}
+	file_app_identity_service_proto_msgTypes[2].OneofWrappers = []interface{}{}
+	file_app_identity_service_proto_msgTypes[4].OneofWrappers = []interface{}{}
+	file_app_identity_service_proto_msgTypes[5].OneofWrappers = []interface{}{}
+	file_app_identity_service_proto_msgTypes[7].OneofWrappers = []interface{}{}
+	file_app_identity_service_proto_msgTypes[8].OneofWrappers = []interface{}{}
+	file_app_identity_service_proto_msgTypes[9].OneofWrappers = []interface{}{}
+	file_app_identity_service_proto_msgTypes[11].OneofWrappers = []interface{}{}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_app_identity_service_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   12,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_app_identity_service_proto_goTypes,
+		DependencyIndexes: file_app_identity_service_proto_depIdxs,
+		EnumInfos:         file_app_identity_service_proto_enumTypes,
+		MessageInfos:      file_app_identity_service_proto_msgTypes,
+	}.Build()
+	File_app_identity_service_proto = out.File
+	file_app_identity_service_proto_rawDesc = nil
+	file_app_identity_service_proto_goTypes = nil
+	file_app_identity_service_proto_depIdxs = nil
+}
diff --git a/internal/datastore/datastore_v3.pb.go b/internal/datastore/datastore_v3.pb.go
index 862c1f2b..6d62bf00 100644
--- a/internal/datastore/datastore_v3.pb.go
+++ b/internal/datastore/datastore_v3.pb.go
@@ -752,7 +752,7 @@ type PropertyValue struct {
 
 	Int64Value     *int64                            `protobuf:"varint,1,opt,name=int64Value,proto3,oneof" json:"int64Value,omitempty"`
 	BooleanValue   *bool                             `protobuf:"varint,2,opt,name=booleanValue,proto3,oneof" json:"booleanValue,omitempty"`
-	StringValue    *string                           `protobuf:"bytes,3,opt,name=stringValue,proto3,oneof" json:"stringValue,omitempty"`
+	StringValue    []byte                            `protobuf:"bytes,3,opt,name=stringValue,proto3" json:"stringValue,omitempty"`
 	DoubleValue    *float64                          `protobuf:"fixed64,4,opt,name=doubleValue,proto3,oneof" json:"doubleValue,omitempty"`
 	PointValue     *PropertyValue_PointValueType     `protobuf:"bytes,5,opt,name=PointValue,proto3,oneof" json:"PointValue,omitempty"`
 	UserValue      *PropertyValue_UserValueType      `protobuf:"bytes,8,opt,name=UserValue,proto3,oneof" json:"UserValue,omitempty"`
@@ -805,11 +805,11 @@ func (x *PropertyValue) GetBooleanValue() bool {
 	return false
 }
 
-func (x *PropertyValue) GetStringValue() string {
-	if x != nil && x.StringValue != nil {
-		return *x.StringValue
+func (x *PropertyValue) GetStringValue() []byte {
+	if x != nil {
+		return x.StringValue
 	}
-	return ""
+	return nil
 }
 
 func (x *PropertyValue) GetDoubleValue() float64 {
@@ -4630,875 +4630,874 @@ var File_datastore_v3_proto protoreflect.FileDescriptor
 var file_datastore_v3_proto_rawDesc = []byte{
 	0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x76, 0x33, 0x2e, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22,
-	0x08, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe9, 0x08, 0x0a, 0x0d, 0x50, 0x72,
+	0x08, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd4, 0x08, 0x0a, 0x0d, 0x50, 0x72,
 	0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x69,
 	0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48,
 	0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01,
 	0x12, 0x27, 0x0a, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
 	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61,
-	0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x73, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02,
-	0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01,
-	0x12, 0x25, 0x0a, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70,
+	0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b,
+	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64,
+	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01,
+	0x48, 0x02, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88,
+	0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x48,
+	0x03, 0x52, 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x49, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x55, 0x73,
+	0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x48, 0x04, 0x52, 0x09, 0x55,
+	0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0e, 0x52,
+	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0c, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x52, 0x65,
+	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65,
+	0x48, 0x05, 0x52, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x2c, 0x0a, 0x0e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x01, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01,
+	0x52, 0x01, 0x79, 0x1a, 0x8a, 0x02, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x09,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x61,
+	0x75, 0x74, 0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x08,
+	0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+	0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a,
+	0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74,
+	0x69, 0x74, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x11, 0x66, 0x65, 0x64,
+	0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x88, 0x01,
+	0x01, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70,
+	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52,
+	0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
+	0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61,
+	0x6d, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65,
+	0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
+	0x1a, 0x9d, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x0d,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d,
+	0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+	0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a,
+	0x0b, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50,
+	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x52, 0x65, 0x66,
+	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e,
+	0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52,
+	0x0b, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x63, 0x0a, 0x0f,
+	0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12,
+	0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74,
+	0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x48,
+	0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+	0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01,
+	0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d,
+	0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65,
+	0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42,
+	0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42,
+	0x0c, 0x0a, 0x0a, 0x5f, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x11, 0x0a,
+	0x0f, 0x5f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x22, 0xc7, 0x06, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x3a, 0x0a,
+	0x07, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65,
+	0x72, 0x74, 0x79, 0x2e, 0x4d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x6d,
+	0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6d, 0x65, 0x61,
+	0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
+	0x52, 0x0a, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12,
+	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50,
+	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12,
+	0x23, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20,
+	0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x61, 0x62, 0x6c,
+	0x65, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
+	0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+	0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x46, 0x74, 0x73, 0x54, 0x6f,
+	0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x48, 0x03, 0x52, 0x15, 0x66, 0x74, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06,
+	0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x06,
+	0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x22, 0xc5, 0x02, 0x0a, 0x07, 0x4d, 0x65,
+	0x61, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x5f, 0x4d, 0x45, 0x41, 0x4e,
+	0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4c, 0x4f, 0x42, 0x10, 0x0e, 0x12,
+	0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x0f, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x59, 0x54,
+	0x45, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x10, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x54, 0x4f,
+	0x4d, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09,
+	0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x41,
+	0x54, 0x4f, 0x4d, 0x5f, 0x54, 0x49, 0x54, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x41,
+	0x54, 0x4f, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x10, 0x0a,
+	0x0c, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x05, 0x12,
+	0x0f, 0x0a, 0x0b, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x10, 0x06,
+	0x12, 0x0b, 0x0a, 0x07, 0x47, 0x44, 0x5f, 0x57, 0x48, 0x45, 0x4e, 0x10, 0x07, 0x12, 0x0c, 0x0a,
+	0x08, 0x47, 0x44, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x47,
+	0x45, 0x4f, 0x52, 0x53, 0x53, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x09, 0x12, 0x09, 0x0a,
+	0x05, 0x47, 0x44, 0x5f, 0x49, 0x4d, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x44, 0x5f, 0x50,
+	0x48, 0x4f, 0x4e, 0x45, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10,
+	0x47, 0x44, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x41, 0x4c, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53,
+	0x10, 0x0c, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x44, 0x5f, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10,
+	0x0d, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4c, 0x4f, 0x42, 0x4b, 0x45, 0x59, 0x10, 0x11, 0x12, 0x10,
+	0x0a, 0x0c, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x10, 0x13,
+	0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10,
+	0x12, 0x22, 0x35, 0x0a, 0x15, 0x46, 0x74, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f,
+	0x4e, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x4d, 0x4c, 0x10, 0x01, 0x12, 0x08,
+	0x0a, 0x04, 0x41, 0x54, 0x4f, 0x4d, 0x10, 0x02, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, 0x65, 0x61,
+	0x6e, 0x69, 0x6e, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67,
+	0x5f, 0x75, 0x72, 0x69, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x61,
+	0x62, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
+	0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42,
+	0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x04, 0x50,
+	0x61, 0x74, 0x68, 0x12, 0x35, 0x0a, 0x07, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x50, 0x61, 0x74, 0x68, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
+	0x65, 0x52, 0x07, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x5f, 0x0a, 0x0b, 0x45, 0x6c,
+	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a,
+	0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88,
+	0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f,
+	0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x75, 0x0a, 0x09, 0x52,
+	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18,
+	0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x61,
+	0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
+	0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23,
+	0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x04, 0x70,
+	0x61, 0x74, 0x68, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61,
+	0x63, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65,
+	0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69,
+	0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x44, 0x6f, 0x6d, 0x61,
+	0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65,
+	0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64,
+	0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x01, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e,
+	0x74, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64,
+	0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+	0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65, 0x64,
+	0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42,
+	0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72,
+	0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xd6, 0x03, 0x0a, 0x0b, 0x45, 0x6e, 0x74, 0x69, 0x74,
+	0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32,
+	0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x10,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f,
+	0x75, 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x55, 0x73,
+	0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x34,
+	0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e,
+	0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x75, 0x72, 0x69,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6b, 0x69, 0x6e, 0x64, 0x55, 0x72,
+	0x69, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+	0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f,
+	0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x0c, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x72, 0x6f,
+	0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70,
 	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x54, 0x79, 0x70, 0x65, 0x48, 0x04, 0x52, 0x0a, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
-	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65,
-	0x48, 0x05, 0x52, 0x09, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01,
-	0x12, 0x58, 0x0a, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
-	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x54, 0x79, 0x70, 0x65, 0x48, 0x06, 0x52, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
-	0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x2c, 0x0a, 0x0e, 0x50, 0x6f,
-	0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x01,
-	0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x79, 0x1a, 0x8a, 0x02, 0x0a, 0x0d, 0x55, 0x73, 0x65,
-	0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d,
-	0x61, 0x69, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c,
-	0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69,
-	0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20,
-	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x88,
-	0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
-	0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74,
-	0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61,
-	0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01,
-	0x28, 0x09, 0x48, 0x02, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x50,
-	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e,
-	0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65, 0x64, 0x65,
-	0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x15,
-	0x0a, 0x13, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f,
-	0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0x9d, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
-	0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03,
-	0x61, 0x70, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x22,
-	0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01,
-	0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x88,
-	0x01, 0x01, 0x12, 0x5d, 0x0a, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
-	0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
-	0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x54, 0x79, 0x70, 0x65, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
-	0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
-	0x74, 0x1a, 0x63, 0x0a, 0x0f, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
-	0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x10,
-	0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a,
-	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e,
-	0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a,
-	0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f,
-	0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x55, 0x73, 0x65, 0x72, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc7, 0x06, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
-	0x74, 0x79, 0x12, 0x3a, 0x0a, 0x07, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x4d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67,
-	0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x24,
-	0x0a, 0x0b, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x55, 0x72,
-	0x69, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
-	0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x75, 0x6c, 0x74,
-	0x69, 0x70, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x75, 0x6c, 0x74,
-	0x69, 0x70, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x61, 0x62,
-	0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72,
-	0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x17, 0x66, 0x74, 0x73,
-	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x70,
-	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e,
-	0x46, 0x74, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x15, 0x66, 0x74, 0x73, 0x54, 0x6f, 0x6b, 0x65,
-	0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01,
-	0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x09, 0x48, 0x04, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x22, 0xc5,
-	0x02, 0x0a, 0x07, 0x4d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f,
-	0x5f, 0x4d, 0x45, 0x41, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4c,
-	0x4f, 0x42, 0x10, 0x0e, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x0f, 0x12, 0x0e,
-	0x0a, 0x0a, 0x42, 0x59, 0x54, 0x45, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x10, 0x12, 0x11,
-	0x0a, 0x0d, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10,
-	0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x02,
-	0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x54, 0x49, 0x54, 0x4c, 0x45, 0x10, 0x03,
-	0x12, 0x10, 0x0a, 0x0c, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54,
-	0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x53, 0x55, 0x4d, 0x4d, 0x41,
-	0x52, 0x59, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x54, 0x4f, 0x4d, 0x5f, 0x41, 0x55, 0x54,
-	0x48, 0x4f, 0x52, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x44, 0x5f, 0x57, 0x48, 0x45, 0x4e,
-	0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x47, 0x44, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x08,
-	0x12, 0x10, 0x0a, 0x0c, 0x47, 0x45, 0x4f, 0x52, 0x53, 0x53, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54,
-	0x10, 0x09, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x44, 0x5f, 0x49, 0x4d, 0x10, 0x0a, 0x12, 0x12, 0x0a,
-	0x0e, 0x47, 0x44, 0x5f, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10,
-	0x0b, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x44, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x41, 0x4c, 0x41, 0x44,
-	0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0c, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x44, 0x5f, 0x52, 0x41,
-	0x54, 0x49, 0x4e, 0x47, 0x10, 0x0d, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4c, 0x4f, 0x42, 0x4b, 0x45,
-	0x59, 0x10, 0x11, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52,
-	0x4f, 0x54, 0x4f, 0x10, 0x13, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x10, 0x12, 0x22, 0x35, 0x0a, 0x15, 0x46, 0x74, 0x73, 0x54, 0x6f, 0x6b,
-	0x65, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
-	0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x4d,
-	0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x54, 0x4f, 0x4d, 0x10, 0x02, 0x42, 0x0a, 0x0a,
-	0x08, 0x5f, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x65,
-	0x61, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x65,
-	0x61, 0x72, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x74, 0x73,
-	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x22,
-	0x9e, 0x01, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x35, 0x0a, 0x07, 0x45, 0x6c, 0x65, 0x6d,
-	0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65,
-	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65,
-	0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a,
-	0x5f, 0x0a, 0x0b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12,
-	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79,
-	0x70, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00,
-	0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01,
-	0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
-	0x22, 0x75, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x10, 0x0a,
-	0x03, 0x61, 0x70, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12,
-	0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20,
-	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65,
-	0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x61,
-	0x74, 0x68, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x6d,
-	0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72,
-	0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64,
-	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, 0x74,
-	0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e,
-	0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x69, 0x63,
-	0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x66, 0x65, 0x64, 0x65,
-	0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65,
-	0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12,
-	0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
-	0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x11, 0x66, 0x65, 0x64, 0x65,
-	0x72, 0x61, 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01,
-	0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x15, 0x0a,
-	0x13, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x74, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xd6, 0x03, 0x0a, 0x0b,
-	0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x26, 0x0a, 0x03, 0x6b,
-	0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
-	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72,
-	0x6f, 0x75, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65,
-	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69,
-	0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72,
-	0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72,
-	0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x6e,
-	0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x48, 0x01,
-	0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6b, 0x69, 0x6e,
-	0x64, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x6b,
-	0x69, 0x6e, 0x64, 0x55, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x72, 0x6f,
-	0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70,
+	0x52, 0x0b, 0x72, 0x61, 0x77, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x17, 0x0a,
+	0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x04, 0x72,
+	0x61, 0x6e, 0x6b, 0x88, 0x01, 0x01, 0x22, 0x3e, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x08,
+	0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x44, 0x5f, 0x43,
+	0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x47, 0x44, 0x5f, 0x45,
+	0x56, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x44, 0x5f, 0x4d, 0x45, 0x53,
+	0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72,
+	0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6b, 0x69,
+	0x6e, 0x64, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x22,
+	0x44, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70,
+	0x65, 0x72, 0x74, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x69, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x64, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb4, 0x02, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
+	0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65,
+	0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x08,
+	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78,
+	0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x50,
+	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x1a, 0xb2, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70,
+	0x65, 0x72, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x09,
+	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x27, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65,
+	0x78, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44,
+	0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x22, 0x34, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12,
+	0x0d, 0x0a, 0x09, 0x41, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e,
+	0x0a, 0x0a, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x42, 0x0c,
+	0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xba, 0x02, 0x0a,
+	0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
+	0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0a, 0x64, 0x65,
+	0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
+	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64,
+	0x65, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12,
+	0x34, 0x0a, 0x14, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x72,
+	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52,
+	0x11, 0x6f, 0x6e, 0x6c, 0x79, 0x55, 0x73, 0x65, 0x49, 0x66, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
+	0x65, 0x64, 0x88, 0x01, 0x01, 0x22, 0x49, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x08,
+	0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x52, 0x49, 0x54,
+	0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x41, 0x44,
+	0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45,
+	0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04,
+	0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x66,
+	0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x93, 0x02, 0x0a, 0x0c, 0x49, 0x6e,
+	0x64, 0x65, 0x78, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x12, 0x43, 0x0a, 0x0b, 0x69, 0x6e,
+	0x64, 0x65, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x22, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65,
+	0x78, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
+	0x2b, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+	0x63, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06,
+	0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06,
+	0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x61, 0x0a, 0x0a, 0x49, 0x6e, 0x64,
+	0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65,
+	0x72, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+	0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70,
 	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
-	0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x0c, 0x72, 0x61,
-	0x77, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f,
-	0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0b, 0x72, 0x61, 0x77, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
-	0x74, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05,
-	0x48, 0x03, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x88, 0x01, 0x01, 0x22, 0x3e, 0x0a, 0x04, 0x4b,
-	0x69, 0x6e, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a,
-	0x0a, 0x47, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a,
-	0x08, 0x47, 0x44, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x47,
-	0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x42, 0x08, 0x0a, 0x06, 0x5f,
-	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x42, 0x0b,
-	0x0a, 0x09, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x07, 0x0a, 0x05, 0x5f,
-	0x72, 0x61, 0x6e, 0x6b, 0x22, 0x44, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74,
-	0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x64,
-	0x65, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x69, 0x6e, 0x64,
-	0x65, 0x78, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb4, 0x02, 0x0a, 0x05, 0x49,
-	0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74,
-	0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74,
-	0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f,
-	0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f,
-	0x72, 0x12, 0x39, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x49, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54, 0x79,
-	0x70, 0x65, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x1a, 0xb2, 0x01, 0x0a,
-	0x0c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a,
-	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
-	0x65, 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
-	0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x54,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04,
+	0x5f, 0x6b, 0x65, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x22,
+	0x56, 0x0a, 0x0d, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
+	0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+	0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72,
+	0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x09, 0x0a, 0x07,
+	0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x22, 0x3e, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73,
+	0x68, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x02, 0x74, 0x73, 0x22, 0x22, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0c, 0x0a,
+	0x08, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41,
+	0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x22, 0x2f, 0x0a, 0x0e, 0x49, 0x6e, 0x74, 0x65, 0x72,
+	0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x03, 0x71, 0x6f, 0x73,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x71, 0x6f, 0x73, 0x88, 0x01, 0x01,
+	0x42, 0x06, 0x0a, 0x04, 0x5f, 0x71, 0x6f, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x61,
+	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64,
+	0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01,
+	0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06,
+	0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61,
+	0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+	0x48, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x88,
+	0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0f, 0x0a,
+	0x0d, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0xe6,
+	0x0f, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64,
+	0x65, 0x72, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01,
+	0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61,
+	0x70, 0x70, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65,
+	0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70,
+	0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12,
+	0x35, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65,
+	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x03, 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73,
+	0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+	0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54,
+	0x79, 0x70, 0x65, 0x52, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0c, 0x73,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x04, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79,
+	0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x51,
+	0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05,
+	0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x18, 0x12, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x48, 0x69, 0x6e, 0x74, 0x48, 0x05, 0x52, 0x04, 0x68, 0x69,
+	0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x17,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01,
+	0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x07, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a,
+	0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x48, 0x08, 0x52, 0x05,
+	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70,
+	0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x1e, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f,
+	0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x48, 0x09, 0x52, 0x0e,
+	0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01,
+	0x01, 0x12, 0x4e, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
+	0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69,
+	0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x48, 0x0a, 0x52, 0x11, 0x65, 0x6e, 0x64,
+	0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01,
+	0x01, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x69,
+	0x6e, 0x64, 0x65, 0x78, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65,
+	0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65,
+	0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x35, 0x0a, 0x14, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+	0x5f, 0x70, 0x65, 0x72, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x14, 0x20,
+	0x01, 0x28, 0x08, 0x48, 0x0b, 0x52, 0x12, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x50, 0x65,
+	0x72, 0x66, 0x65, 0x63, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09,
+	0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x48,
+	0x0c, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3d,
+	0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x16, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x0d, 0x52, 0x0b, 0x74,
+	0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a,
+	0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0e,
+	0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b,
+	0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28,
+	0x03, 0x48, 0x0f, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x18, 0x20, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x10, 0x52, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12,
+	0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x18, 0x21, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79,
+	0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x22,
+	0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x50, 0x72, 0x6f,
+	0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x64, 0x69, 0x73,
+	0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x48, 0x11, 0x52, 0x08, 0x64,
+	0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x15, 0x6d, 0x69,
+	0x6e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f,
+	0x6e, 0x64, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x03, 0x48, 0x12, 0x52, 0x12, 0x6d, 0x69, 0x6e,
+	0x53, 0x61, 0x66, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69,
+	0x63, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x24, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73,
+	0x61, 0x66, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a,
+	0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74,
+	0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x48, 0x13, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73,
+	0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x1a, 0xfd, 0x01, 0x0a, 0x0a, 0x46,
+	0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x02, 0x6f, 0x70, 0x18,
+	0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79,
+	0x70, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x02, 0x6f, 0x70, 0x12,
+	0x2f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72,
+	0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+	0x22, 0x87, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x08, 0x0a,
+	0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x53, 0x53, 0x5f,
+	0x54, 0x48, 0x41, 0x4e, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54,
+	0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x10,
+	0x0a, 0x0c, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x03,
+	0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e,
+	0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x45,
+	0x51, 0x55, 0x41, 0x4c, 0x10, 0x05, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x4e, 0x10, 0x06, 0x12, 0x0a,
+	0x0a, 0x06, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x07, 0x1a, 0xb4, 0x01, 0x0a, 0x09, 0x4f,
+	0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70,
+	0x65, 0x72, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70,
+	0x65, 0x72, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54,
 	0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52,
 	0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x22, 0x34, 0x0a,
 	0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f,
 	0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e,
 	0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e,
 	0x47, 0x10, 0x02, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
-	0x6e, 0x22, 0xba, 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49,
-	0x6e, 0x64, 0x65, 0x78, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69,
-	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x0a, 0x64,
-	0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x10, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65,
-	0x78, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a,
-	0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61,
-	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69,
-	0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73,
-	0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x14, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x75, 0x73, 0x65,
-	0x5f, 0x69, 0x66, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x08, 0x48, 0x00, 0x52, 0x11, 0x6f, 0x6e, 0x6c, 0x79, 0x55, 0x73, 0x65, 0x49, 0x66, 0x52,
-	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x88, 0x01, 0x01, 0x22, 0x49, 0x0a, 0x05, 0x53, 0x74,
-	0x61, 0x74, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a,
-	0x0a, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0e, 0x0a,
-	0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a,
-	0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52,
-	0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x75,
-	0x73, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x93,
-	0x02, 0x0a, 0x0c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x12,
-	0x43, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
-	0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x2e, 0x49, 0x6e,
-	0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65,
-	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01,
-	0x01, 0x12, 0x1b, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x08, 0x48, 0x01, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x61,
-	0x0a, 0x0a, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d,
-	0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d,
-	0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f,
-	0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x62, 0x65,
-	0x66, 0x6f, 0x72, 0x65, 0x22, 0x56, 0x0a, 0x0d, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x6f, 0x73,
-	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06,
-	0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06,
-	0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65,
-	0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x22, 0x3e, 0x0a, 0x08,
-	0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x73, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x73, 0x22, 0x22, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74,
-	0x75, 0x73, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00,
-	0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x22, 0x2f, 0x0a, 0x0e,
-	0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x15,
-	0x0a, 0x03, 0x71, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x71,
-	0x6f, 0x73, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x71, 0x6f, 0x73, 0x22, 0xb3, 0x01,
-	0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a,
-	0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
-	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e,
-	0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64,
-	0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x10, 0x0a,
-	0x03, 0x61, 0x70, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12,
-	0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x43, 0x68, 0x61,
-	0x6e, 0x67, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64,
-	0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x73, 0x22, 0xe6, 0x0f, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x36, 0x0a,
-	0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
-	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e,
-	0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64,
-	0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f,
-	0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x6e,
-	0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6b,
-	0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x6b, 0x69, 0x6e,
-	0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72,
-	0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x03, 0x52, 0x08,
-	0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x06, 0x46,
-	0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70,
-	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69,
-	0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
-	0x12, 0x26, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
-	0x51, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65,
-	0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
-	0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54,
-	0x79, 0x70, 0x65, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x04, 0x68, 0x69,
-	0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
-	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x48, 0x69, 0x6e, 0x74, 0x48,
-	0x05, 0x52, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f,
-	0x75, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x05, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18,
-	0x0c, 0x20, 0x01, 0x28, 0x05, 0x48, 0x07, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88,
-	0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28,
-	0x05, 0x48, 0x08, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a,
-	0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72,
-	0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f,
-	0x72, 0x48, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72,
-	0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x6f,
-	0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x1f, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x48, 0x0a,
-	0x52, 0x11, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72,
-	0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73,
-	0x69, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70,
-	0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70,
-	0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x35, 0x0a, 0x14, 0x72, 0x65,
-	0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6c,
-	0x61, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0b, 0x52, 0x12, 0x72, 0x65, 0x71, 0x75,
-	0x69, 0x72, 0x65, 0x50, 0x65, 0x72, 0x66, 0x65, 0x63, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x88, 0x01,
-	0x01, 0x12, 0x20, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x15,
-	0x20, 0x01, 0x28, 0x08, 0x48, 0x0c, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x4f, 0x6e, 0x6c, 0x79,
-	0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69,
-	0x6f, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
-	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x48, 0x0d, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88,
-	0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x18, 0x19, 0x20,
-	0x01, 0x28, 0x08, 0x48, 0x0e, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x88, 0x01,
-	0x01, 0x12, 0x24, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x73,
-	0x18, 0x1a, 0x20, 0x01, 0x28, 0x03, 0x48, 0x0f, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76,
-	0x65, 0x72, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e,
-	0x67, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x48, 0x10, 0x52, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e,
-	0x67, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
-	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x21, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f,
-	0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x67, 0x72, 0x6f,
-	0x75, 0x70, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e,
-	0x61, 0x6d, 0x65, 0x18, 0x22, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x67, 0x72, 0x6f, 0x75, 0x70,
-	0x42, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f,
-	0x0a, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08,
-	0x48, 0x11, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12,
-	0x36, 0x0a, 0x15, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65,
-	0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x03, 0x48, 0x12,
-	0x52, 0x12, 0x6d, 0x69, 0x6e, 0x53, 0x61, 0x66, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63,
-	0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x66, 0x65, 0x5f,
-	0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x24, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0f, 0x73, 0x61, 0x66, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x4e,
-	0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x6f,
-	0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x48, 0x13, 0x52, 0x0d, 0x70,
-	0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x1a,
-	0xfd, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34,
-	0x0a, 0x02, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x70,
-	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6c,
-	0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
-	0x52, 0x02, 0x6f, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
-	0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f,
-	0x70, 0x65, 0x72, 0x74, 0x79, 0x22, 0x87, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
-	0x6f, 0x72, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09,
-	0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c,
-	0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41,
-	0x4c, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54,
-	0x48, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52,
-	0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x04,
-	0x12, 0x09, 0x0a, 0x05, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x05, 0x12, 0x06, 0x0a, 0x02, 0x49,
-	0x4e, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x07, 0x1a,
-	0xb4, 0x01, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a,
-	0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x69, 0x72,
-	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x61,
-	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4f,
-	0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
-	0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88,
-	0x01, 0x01, 0x22, 0x34, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
-	0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x53, 0x43,
-	0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x43,
-	0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72,
-	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x04, 0x48, 0x69, 0x6e, 0x74, 0x12, 0x08,
-	0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x52, 0x44, 0x45,
-	0x52, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x4e, 0x43,
-	0x45, 0x53, 0x54, 0x4f, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x02, 0x12, 0x10, 0x0a,
-	0x0c, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x03, 0x42,
-	0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e,
-	0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69,
+	0x6e, 0x22, 0x47, 0x0a, 0x04, 0x48, 0x69, 0x6e, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e,
+	0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x46, 0x49, 0x52,
+	0x53, 0x54, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x54, 0x4f, 0x52,
+	0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x4c, 0x54,
+	0x45, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68,
+	0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73,
+	0x70, 0x61, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x42, 0x0b, 0x0a,
+	0x09, 0x5f, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x5f,
+	0x68, 0x69, 0x6e, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x09,
+	0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69,
+	0x6d, 0x69, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64,
+	0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x64, 0x5f,
+	0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x42,
+	0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x66,
+	0x65, 0x63, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6b, 0x65, 0x79,
+	0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73,
+	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69,
+	0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f,
+	0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x42, 0x0b, 0x0a,
+	0x09, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d,
+	0x69, 0x6e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63,
+	0x6f, 0x6e, 0x64, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
+	0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0xd1, 0x0a, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70,
+	0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x4a, 0x0a, 0x0b, 0x50, 0x72, 0x69,
+	0x6d, 0x61, 0x72, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69,
+	0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79,
+	0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72,
+	0x79, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x50, 0x0a, 0x0d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f,
+	0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
+	0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e,
+	0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a,
+	0x6f, 0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x32, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78,
+	0x5f, 0x64, 0x65, 0x66, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x48, 0x00, 0x52, 0x08,
+	0x69, 0x6e, 0x64, 0x65, 0x78, 0x44, 0x65, 0x66, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f,
+	0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x06, 0x6f,
+	0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69,
+	0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74,
+	0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79,
+	0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x4f, 0x6e, 0x6c, 0x79,
+	0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
+	0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63,
+	0x74, 0x5f, 0x69, 0x6e, 0x66, 0x69, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x19, 0x20, 0x01,
+	0x28, 0x05, 0x48, 0x03, 0x52, 0x11, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x49, 0x6e,
+	0x66, 0x69, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x45, 0x6e,
+	0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x29, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d,
+	0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74,
+	0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x48, 0x04, 0x52, 0x0c, 0x45,
+	0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x1a, 0xe4,
+	0x03, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79,
+	0x70, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e,
+	0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
+	0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x73, 0x74, 0x61,
+	0x72, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x08, 0x48, 0x02, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73,
+	0x69, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x5f, 0x6b, 0x65,
+	0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x06, 0x65, 0x6e, 0x64, 0x4b, 0x65,
+	0x79, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x63, 0x6c,
+	0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0c, 0x65,
+	0x6e, 0x64, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e,
+	0x0a, 0x13, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x5f,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x61,
+	0x72, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a,
+	0x0a, 0x11, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x5f, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x50, 0x6f,
+	0x73, 0x74, 0x66, 0x69, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x47, 0x0a, 0x1e, 0x65, 0x6e,
+	0x64, 0x5f, 0x75, 0x6e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f,
+	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x73, 0x18, 0x13, 0x20, 0x01,
+	0x28, 0x03, 0x48, 0x05, 0x52, 0x1a, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x61, 0x70, 0x70, 0x6c, 0x69,
+	0x65, 0x64, 0x4c, 0x6f, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x55, 0x73,
+	0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6b, 0x65, 0x79,
+	0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75,
+	0x73, 0x69, 0x76, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x6b, 0x65, 0x79,
+	0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69,
+	0x76, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x75, 0x6e, 0x61, 0x70, 0x70,
+	0x6c, 0x69, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x5f, 0x75, 0x73, 0x1a, 0x8e, 0x01, 0x0a, 0x11, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a,
+	0x6f, 0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69,
+	0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72,
+	0x65, 0x66, 0x69, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09,
+	0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x26, 0x0a,
+	0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x14, 0x20,
+	0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x72, 0x65, 0x66,
+	0x69, 0x78, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f,
+	0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0xa6, 0x01, 0x0a, 0x10, 0x45, 0x6e, 0x74, 0x69, 0x74,
+	0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x64,
+	0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52,
+	0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04,
+	0x6b, 0x69, 0x6e, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6b, 0x69,
+	0x6e, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f,
+	0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x02, 0x52,
+	0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09,
+	0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69,
 	0x6e, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x42,
-	0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79,
-	0x42, 0x07, 0x0a, 0x05, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f,
-	0x75, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08,
-	0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6d,
-	0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x42, 0x16, 0x0a, 0x14,
-	0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75,
-	0x72, 0x73, 0x6f, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x5f, 0x70, 0x65, 0x72, 0x66, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x42, 0x0c, 0x0a,
-	0x0a, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
-	0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
-	0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x61, 0x69, 0x6c,
-	0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x72, 0x6f,
-	0x6e, 0x67, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x42,
-	0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x74, 0x69, 0x6d,
-	0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x65,
-	0x72, 0x73, 0x69, 0x73, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0xd1, 0x0a, 0x0a,
-	0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x4a,
-	0x0a, 0x0b, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x72,
-	0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x50,
-	0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x50, 0x0a, 0x0d, 0x4d, 0x65,
-	0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f,
-	0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67,
-	0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x4d,
-	0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x32, 0x0a, 0x09,
-	0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x10, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65,
-	0x78, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x44, 0x65, 0x66, 0x88, 0x01, 0x01,
-	0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05,
-	0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a,
-	0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x05,
-	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x73,
-	0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6b, 0x65, 0x79,
-	0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
-	0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72,
-	0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x13, 0x64, 0x69,
-	0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x69, 0x78, 0x5f, 0x73, 0x69, 0x7a,
-	0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x11, 0x64, 0x69, 0x73, 0x74, 0x69,
-	0x6e, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x69, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12,
-	0x52, 0x0a, 0x0c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18,
-	0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
-	0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e,
-	0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
-	0x48, 0x04, 0x52, 0x0c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
-	0x88, 0x01, 0x01, 0x1a, 0xe4, 0x03, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53,
-	0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78,
-	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x69,
-	0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x73,
-	0x74, 0x61, 0x72, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
-	0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a,
-	0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49,
-	0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x65,
-	0x6e, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x06,
-	0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6e, 0x64,
-	0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08,
-	0x48, 0x04, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
-	0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x73,
-	0x74, 0x66, 0x69, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x56, 0x61,
-	0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x66,
-	0x69, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
-	0x65, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x66, 0x69, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
-	0x47, 0x0a, 0x1e, 0x65, 0x6e, 0x64, 0x5f, 0x75, 0x6e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64,
-	0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75,
-	0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x48, 0x05, 0x52, 0x1a, 0x65, 0x6e, 0x64, 0x55, 0x6e,
-	0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x55, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x64,
-	0x65, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x74, 0x61, 0x72,
-	0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
-	0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x6e,
-	0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x6e,
-	0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x65, 0x6e, 0x64, 0x5f,
-	0x75, 0x6e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x73, 0x1a, 0x8e, 0x01, 0x0a, 0x11, 0x4d,
-	0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65,
-	0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12,
-	0x21, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66,
-	0x69, 0x78, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0xa6, 0x01, 0x0a, 0x10,
-	0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
-	0x12, 0x1f, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, 0x0e, 0x20, 0x01,
-	0x28, 0x08, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x88, 0x01,
-	0x01, 0x12, 0x17, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x48,
-	0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x6e,
-	0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
-	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
-	0x63, 0x65, 0x48, 0x02, 0x52, 0x08, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x88, 0x01,
-	0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x42, 0x07,
-	0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x6e, 0x63, 0x65,
-	0x73, 0x74, 0x6f, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x64,
-	0x65, 0x66, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a,
-	0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, 0x69, 0x73, 0x74,
-	0x69, 0x6e, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x69, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42,
-	0x0f, 0x0a, 0x0d, 0x5f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
-	0x22, 0xe5, 0x03, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72,
-	0x73, 0x6f, 0x72, 0x12, 0x47, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
-	0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72,
-	0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52,
-	0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x1a, 0xfc, 0x02, 0x0a,
-	0x0c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a,
-	0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09,
-	0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12,
-	0x55, 0x0a, 0x0a, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1d, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x2e, 0x50,
-	0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65,
-	0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x49, 0x6e, 0x64, 0x65,
-	0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x20, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x63,
-	0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0e,
-	0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x88, 0x01,
-	0x01, 0x1a, 0x6e, 0x0a, 0x0e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54,
-	0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18,
-	0x1e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
-	0x79, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1f, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
-	0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42,
-	0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x74, 0x61, 0x72,
-	0x74, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
-	0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x06, 0x43, 0x75, 0x72, 0x73,
-	0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x06, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x15, 0x0a, 0x03, 0x61, 0x70,
-	0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x61, 0x70, 0x70, 0x88, 0x01,
-	0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x61, 0x70, 0x70, 0x22, 0x95, 0x02, 0x0a, 0x05, 0x45, 0x72,
-	0x72, 0x6f, 0x72, 0x22, 0x8b, 0x02, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64,
-	0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x42,
-	0x41, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16,
-	0x43, 0x4f, 0x4e, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53,
-	0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45,
-	0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a,
-	0x4e, 0x45, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07,
-	0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52,
-	0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x06,
-	0x12, 0x12, 0x0a, 0x0e, 0x42, 0x49, 0x47, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52,
-	0x4f, 0x52, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45,
-	0x44, 0x5f, 0x42, 0x55, 0x54, 0x5f, 0x53, 0x54, 0x49, 0x4c, 0x4c, 0x5f, 0x41, 0x50, 0x50, 0x4c,
-	0x59, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49,
-	0x4c, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x09, 0x12,
-	0x19, 0x0a, 0x15, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45,
-	0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x41,
-	0x46, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4f, 0x4c, 0x44, 0x10,
-	0x0b, 0x22, 0xce, 0x05, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6e,
-	0x64, 0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
-	0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x88,
-	0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74,
-	0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52,
-	0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73,
-	0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x77, 0x72,
-	0x69, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0c, 0x65, 0x6e,
-	0x74, 0x69, 0x74, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a,
-	0x12, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79,
-	0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x10, 0x65, 0x6e, 0x74,
-	0x69, 0x74, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01,
-	0x12, 0x43, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
-	0x2e, 0x43, 0x6f, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74,
-	0x54, 0x79, 0x70, 0x65, 0x48, 0x04, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f,
-	0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x19, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69,
-	0x6d, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x6c,
-	0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x17, 0x61, 0x70, 0x70, 0x72,
-	0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x65,
-	0x6c, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x64, 0x5f, 0x73, 0x65, 0x71,
-	0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20,
-	0x01, 0x28, 0x05, 0x48, 0x06, 0x52, 0x11, 0x69, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63,
-	0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x1a, 0xbf, 0x01, 0x0a, 0x0e,
-	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x37,
-	0x0a, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69,
-	0x74, 0x79, 0x5f, 0x70, 0x75, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
-	0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79,
-	0x50, 0x75, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x72, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x16, 0x72, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x75, 0x74, 0x73,
-	0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65,
-	0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x42, 0x0f, 0x0a,
-	0x0d, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x42, 0x14,
-	0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62,
-	0x79, 0x74, 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f,
-	0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74,
-	0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x0d, 0x0a,
-	0x0b, 0x5f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x42, 0x1c, 0x0a, 0x1a,
-	0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6f,
-	0x72, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69,
-	0x64, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74,
-	0x65, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06,
-	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01,
-	0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01,
-	0x12, 0x24, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x73, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65,
-	0x72, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67,
-	0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x65, 0x66,
-	0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0d, 0x61,
-	0x6c, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42,
-	0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74,
-	0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x66,
-	0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73,
-	0x74, 0x72, 0x6f, 0x6e, 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f,
-	0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x22, 0xd6, 0x02, 0x0a, 0x0b, 0x47, 0x65, 0x74,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69,
-	0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
-	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x45, 0x6e, 0x74,
-	0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18,
-	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
-	0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x64, 0x65, 0x66,
-	0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65,
-	0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x4f, 0x72, 0x64,
-	0x65, 0x72, 0x88, 0x01, 0x01, 0x1a, 0xac, 0x01, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79,
-	0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
-	0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x00, 0x52, 0x06,
-	0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
-	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
-	0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
-	0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72,
-	0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65,
-	0x72, 0x22, 0xdb, 0x04, 0x0a, 0x0a, 0x50, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74,
-	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68,
-	0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69,
-	0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
-	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e,
-	0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
-	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61,
-	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63,
-	0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
-	0x73, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d,
-	0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0e, 0x63, 0x6f, 0x6d,
-	0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x07, 0x74,
-	0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x07,
-	0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6f,
-	0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x05, 0x66, 0x6f, 0x72,
-	0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68,
-	0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0b, 0x6d,
-	0x61, 0x72, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a,
-	0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70,
-	0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x4d,
-	0x0a, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x69, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
-	0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x75,
-	0x74, 0x6f, 0x49, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x05, 0x52, 0x0c, 0x61, 0x75,
-	0x74, 0x6f, 0x49, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01, 0x01, 0x22, 0x2b, 0x0a,
-	0x0c, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0b, 0x0a,
-	0x07, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x45,
-	0x51, 0x55, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68,
+	0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x64, 0x65, 0x66, 0x42, 0x09, 0x0a,
+	0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d,
+	0x69, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f,
+	0x69, 0x6e, 0x66, 0x69, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x45,
+	0x6e, 0x74, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xe5, 0x03, 0x0a, 0x0e,
+	0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x47,
+	0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x26, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d,
+	0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x2e, 0x50, 0x6f, 0x73, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x1a, 0xfc, 0x02, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x69,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73,
+	0x74, 0x61, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0a, 0x49, 0x6e,
+	0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69,
+	0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69,
+	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x12, 0x2b, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72,
+	0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2c,
+	0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76,
+	0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74,
+	0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x6e, 0x0a, 0x0e,
+	0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f,
+	0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12,
+	0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65,
+	0x72, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42,
+	0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x42, 0x0c, 0x0a, 0x0a,
+	0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6b,
+	0x65, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x63,
+	0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74,
+	0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x06, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x16, 0x0a,
+	0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x06, 0x63,
+	0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x15, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x61, 0x70, 0x70, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04,
+	0x5f, 0x61, 0x70, 0x70, 0x22, 0x95, 0x02, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x8b,
+	0x02, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x08, 0x0a, 0x04,
+	0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x41, 0x44, 0x5f, 0x52, 0x45,
+	0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x43, 0x55,
+	0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f,
+	0x4e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f,
+	0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x45, 0x45, 0x44, 0x5f,
+	0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f,
+	0x55, 0x54, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49,
+	0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x42,
+	0x49, 0x47, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x07, 0x12,
+	0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x55, 0x54,
+	0x5f, 0x53, 0x54, 0x49, 0x4c, 0x4c, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x49, 0x4e, 0x47, 0x10,
+	0x08, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f,
+	0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x09, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x52,
+	0x59, 0x5f, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b,
+	0x45, 0x4e, 0x44, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x41, 0x46, 0x45, 0x5f, 0x54, 0x49,
+	0x4d, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4f, 0x4c, 0x44, 0x10, 0x0b, 0x22, 0xce, 0x05, 0x0a,
+	0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x77,
+	0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x69,
+	0x6e, 0x64, 0x65, 0x78, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a,
+	0x11, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74,
+	0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0f, 0x69, 0x6e, 0x64, 0x65,
+	0x78, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28,
+	0x0a, 0x0d, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x57,
+	0x72, 0x69, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x65, 0x6e, 0x74, 0x69,
+	0x74, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x03, 0x52, 0x10, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x57, 0x72,
+	0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x0a, 0x43,
+	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1e, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74,
+	0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48,
+	0x04, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01,
+	0x12, 0x3f, 0x0a, 0x19, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x5f,
+	0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x08, 0x20,
+	0x01, 0x28, 0x05, 0x48, 0x05, 0x52, 0x17, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61,
+	0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x88, 0x01,
+	0x01, 0x12, 0x33, 0x0a, 0x13, 0x69, 0x64, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65,
+	0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x48, 0x06,
+	0x52, 0x11, 0x69, 0x64, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61,
+	0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x1a, 0xbf, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x69,
+	0x74, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x37, 0x0a, 0x15, 0x72, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x75,
+	0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x75, 0x74, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x88, 0x01,
+	0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
+	0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x75, 0x74, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f,
+	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+	0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x6e, 0x64,
+	0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e,
+	0x64, 0x65, 0x78, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42,
+	0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65,
+	0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x77, 0x72, 0x69,
+	0x74, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x43, 0x6f, 0x6d,
+	0x6d, 0x69, 0x74, 0x43, 0x6f, 0x73, 0x74, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x70, 0x70, 0x72,
+	0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f,
+	0x64, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x65, 0x71,
+	0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0xe3, 0x02,
+	0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06,
+	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
+	0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65,
+	0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65,
+	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x0b,
+	0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72,
+	0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0b, 0x74, 0x72, 0x61,
+	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x66,
+	0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
+	0x48, 0x02, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x73, 0x88, 0x01,
+	0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x08, 0x48, 0x03, 0x52, 0x06, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2a,
+	0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x44,
+	0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68,
 	0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61,
-	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65,
-	0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f,
-	0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x69, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22,
-	0x82, 0x01, 0x0a, 0x0b, 0x50, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
-	0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61,
-	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
-	0x63, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
-	0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x88, 0x01,
-	0x01, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03,
-	0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f,
-	0x63, 0x6f, 0x73, 0x74, 0x22, 0x93, 0x02, 0x0a, 0x0c, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
-	0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
-	0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a,
-	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70,
-	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
-	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69,
-	0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
-	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
-	0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
-	0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6f, 0x72,
-	0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63,
-	0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
-	0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61,
-	0x70, 0x73, 0x68, 0x6f, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
-	0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x42, 0x0a, 0x0d, 0x54, 0x6f,
-	0x75, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x63,
-	0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65,
-	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f,
-	0x73, 0x74, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x83,
-	0x03, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76,
+	0x65, 0x72, 0x5f, 0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67,
+	0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x65, 0x66, 0x65, 0x72,
+	0x72, 0x65, 0x64, 0x22, 0xd6, 0x02, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69,
+	0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x30,
+	0x0a, 0x08, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66,
+	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64,
+	0x12, 0x1e, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01,
+	0x1a, 0xac, 0x01, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12,
+	0x33, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69,
+	0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74,
+	0x79, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65,
+	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x88, 0x01,
+	0x01, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x03, 0x48, 0x02, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01,
+	0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x5f,
+	0x6b, 0x65, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42,
+	0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xdb, 0x04, 0x0a,
+	0x0a, 0x50, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68,
+	0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x65, 0x6e, 0x74,
+	0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x48, 0x01, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88,
+	0x01, 0x01, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f,
+	0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74,
+	0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74,
+	0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65,
+	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74,
+	0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01,
+	0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73,
+	0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x43, 0x68,
+	0x61, 0x6e, 0x67, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70,
+	0x73, 0x68, 0x6f, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52,
+	0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x4d, 0x0a, 0x0e, 0x61, 0x75, 0x74,
+	0x6f, 0x5f, 0x69, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x50, 0x75,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x50,
+	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x05, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x49, 0x64, 0x50,
+	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x88, 0x01, 0x01, 0x22, 0x2b, 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x6f,
+	0x49, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x55, 0x52, 0x52,
+	0x45, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x54,
+	0x49, 0x41, 0x4c, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x42, 0x08, 0x0a, 0x06,
+	0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f,
+	0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x75, 0x74, 0x6f,
+	0x5f, 0x69, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x82, 0x01, 0x0a, 0x0b, 0x50,
+	0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x65,
+	0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67,
+	0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6b,
+	0x65, 0x79, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x73,
+	0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07,
+	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x76,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x22,
+	0x93, 0x02, 0x0a, 0x0c, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
 	0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
 	0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74,
 	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68,
 	0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
-	0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
 	0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18,
-	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
-	0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52,
-	0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12,
-	0x1d, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
-	0x48, 0x02, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19,
-	0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52,
-	0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x72,
-	0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48,
-	0x04, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x88, 0x01,
-	0x01, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x09, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68,
-	0x6f, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0e, 0x0a,
-	0x0c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a,
-	0x08, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6f,
-	0x72, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61,
-	0x6e, 0x67, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65,
+	0x12, 0x42, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x6e,
+	0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65,
+	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49,
+	0x6e, 0x64, 0x65, 0x78, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49,
+	0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12,
+	0x2f, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x6e,
+	0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
+	0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x5f,
+	0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x42, 0x0a, 0x0d, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x52, 0x65,
 	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x01,
 	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
 	0x2e, 0x43, 0x6f, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01,
-	0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63,
-	0x6f, 0x73, 0x74, 0x22, 0xf3, 0x01, 0x0a, 0x0b, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00,
-	0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x06, 0x63,
-	0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70,
-	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x06,
-	0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01,
-	0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x05, 0x48, 0x02, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d,
-	0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48,
-	0x03, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a,
-	0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0a, 0x0a,
-	0x08, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x22, 0xf1, 0x04, 0x0a, 0x0b, 0x51, 0x75,
-	0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2e, 0x0a, 0x06, 0x63, 0x75, 0x72,
-	0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x70, 0x65,
-	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06,
-	0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73,
-	0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65,
-	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x6b, 0x69,
-	0x70, 0x70, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01,
-	0x28, 0x05, 0x48, 0x01, 0x52, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73,
-	0x75, 0x6c, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x6f, 0x72, 0x65, 0x5f,
-	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6d,
-	0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6b, 0x65,
-	0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52,
-	0x08, 0x6b, 0x65, 0x79, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a,
-	0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08,
-	0x48, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01,
-	0x12, 0x20, 0x0a, 0x09, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x70, 0x73, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x08, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x4f, 0x70, 0x73, 0x88,
-	0x01, 0x01, 0x12, 0x44, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x71,
-	0x75, 0x65, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70,
-	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51,
-	0x75, 0x65, 0x72, 0x79, 0x48, 0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64,
-	0x51, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70,
-	0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f,
-	0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x0e,
-	0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01,
-	0x01, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d,
-	0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64,
-	0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20,
-	0x03, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07,
-	0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x6b, 0x69, 0x70,
-	0x70, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
-	0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e,
-	0x64, 0x65, 0x78, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x6d, 0x61,
-	0x6c, 0x6c, 0x5f, 0x6f, 0x70, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69,
-	0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f,
-	0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8e, 0x02,
-	0x0a, 0x12, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
-	0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48,
-	0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x09,
-	0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65,
-	0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4b, 0x65,
-	0x79, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x03, 0x48, 0x02, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a,
-	0x03, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x03, 0x6d, 0x61,
-	0x78, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18,
-	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
-	0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x73,
-	0x65, 0x72, 0x76, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42,
-	0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x07, 0x0a,
-	0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x61, 0x78, 0x22, 0x70,
-	0x0a, 0x13, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65,
-	0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x0a,
-	0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70,
-	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04,
-	0x63, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x73, 0x74,
-	0x22, 0x43, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64,
-	0x69, 0x63, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05,
-	0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xbb, 0x01, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x41, 0x63, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68,
-	0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
+	0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x83, 0x03, 0x0a, 0x0d, 0x44, 0x65,
+	0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68,
+	0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
 	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
 	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
-	0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69,
-	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
-	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a,
-	0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
-	0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61,
-	0x64, 0x65, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe9, 0x03, 0x0a, 0x17, 0x42, 0x65,
-	0x67, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
-	0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
-	0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a,
-	0x03, 0x61, 0x70, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12,
-	0x2f, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c,
-	0x65, 0x5f, 0x65, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x61, 0x6c,
-	0x6c, 0x6f, 0x77, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x45, 0x67, 0x88, 0x01, 0x01,
-	0x12, 0x24, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73,
-	0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
-	0x2e, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f,
-	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63,
-	0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x03, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65,
-	0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f,
-	0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72,
-	0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x13, 0x70, 0x72, 0x65,
-	0x76, 0x69, 0x6f, 0x75, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x88, 0x01, 0x01, 0x22, 0x3d, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69,
-	0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
-	0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x4c, 0x59,
-	0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45,
-	0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x14, 0x0a,
-	0x12, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65,
-	0x5f, 0x65, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65,
-	0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x17, 0x0a, 0x15,
-	0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61,
-	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66,
+	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x0b, 0x74,
+	0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61,
+	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x72,
+	0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x07, 0x74,
+	0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x6f, 0x72,
+	0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63,
+	0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0b, 0x6d, 0x61,
+	0x72, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x08,
+	0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73,
+	0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x42, 0x09, 0x0a,
+	0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x72, 0x61,
+	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x72, 0x75,
+	0x73, 0x74, 0x65, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x42, 0x0f,
+	0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22,
+	0x5d, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74,
+	0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07, 0x76,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x22, 0xf3,
+	0x01, 0x0a, 0x0b, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36,
+	0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72,
+	0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f,
+	0x72, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x48, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06,
+	0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52, 0x06,
+	0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x63, 0x6f, 0x6d,
+	0x70, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x07, 0x63, 0x6f,
+	0x6d, 0x70, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x09, 0x0a,
+	0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6d,
+	0x70, 0x69, 0x6c, 0x65, 0x22, 0xf1, 0x04, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65,
+	0x73, 0x75, 0x6c, 0x74, 0x12, 0x2e, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f,
+	0x72, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
+	0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x72, 0x65,
+	0x73, 0x75, 0x6c, 0x74, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f,
+	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52,
+	0x0e, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x88,
+	0x01, 0x01, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x6f, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c,
+	0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6d, 0x6f, 0x72, 0x65, 0x52, 0x65,
+	0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x6f, 0x6e,
+	0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73,
+	0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78,
+	0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x09, 0x69,
+	0x6e, 0x64, 0x65, 0x78, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x73,
+	0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x70, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04,
+	0x52, 0x08, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x4f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a,
+	0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e,
+	0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48,
+	0x05, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79,
+	0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f,
+	0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
+	0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x48, 0x06, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x69,
+	0x6c, 0x65, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x05,
+	0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70,
+	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74,
+	0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a,
+	0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07,
+	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x72, 0x73,
+	0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x72,
+	0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x5f,
+	0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x6f,
+	0x6e, 0x6c, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x70,
+	0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x71,
+	0x75, 0x65, 0x72, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
+	0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8e, 0x02, 0x0a, 0x12, 0x41, 0x6c, 0x6c,
+	0x6f, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65,
+	0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65,
+	0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
+	0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70,
+	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+	0x48, 0x01, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12,
+	0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52,
+	0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x88, 0x01, 0x01, 0x12,
+	0x2e, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66,
+	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x42,
+	0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d,
+	0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a,
+	0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x61, 0x78, 0x22, 0x70, 0x0a, 0x13, 0x41, 0x6c, 0x6c,
+	0x6f, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
 	0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x88,
-	0x01, 0x01, 0x12, 0x3f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
-	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56,
-	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x56, 0x65, 0x72, 0x73,
-	0x69, 0x6f, 0x6e, 0x1a, 0x65, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79,
-	0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74,
-	0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70,
-	0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
-	0x65, 0x52, 0x0d, 0x72, 0x6f, 0x6f, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79,
-	0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63,
-	0x6f, 0x73, 0x74, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
-	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
-	0x6e, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x64, 0x61, 0x74, 0x61,
-	0x73, 0x74, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x10, 0x43,
+	0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12,
+	0x2f, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
+	0x73, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78,
+	0x22, 0xbb, 0x01, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65,
+	0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x38,
+	0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
+	0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61,
+	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
+	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x14,
+	0x0a, 0x12, 0x41, 0x64, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe9, 0x03, 0x0a, 0x17, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x54, 0x72,
+	0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x36, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x49, 0x6e, 0x74,
+	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68,
+	0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x2f, 0x0a, 0x11, 0x61, 0x6c,
+	0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x65, 0x67, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x75,
+	0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x45, 0x67, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x64,
+	0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x02, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x88, 0x01,
+	0x01, 0x12, 0x4b, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x32, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x42, 0x65, 0x67, 0x69,
+	0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
+	0x6f, 0x64, 0x65, 0x48, 0x03, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e,
+	0x0a, 0x14, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73,
+	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61,
+	0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63,
+	0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x13, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
+	0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x22, 0x3d,
+	0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64,
+	0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d,
+	0x0a, 0x09, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0e, 0x0a,
+	0x0a, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x42, 0x09, 0x0a,
+	0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x6c, 0x6c,
+	0x6f, 0x77, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x65, 0x67, 0x42, 0x0e,
+	0x0a, 0x0c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x07,
+	0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x72, 0x65, 0x76,
+	0x69, 0x6f, 0x75, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x22, 0xeb, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f,
+	0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a,
+	0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25,
+	0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69,
+	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+	0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x65,
+	0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a,
+	0x0f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6b, 0x65, 0x79,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69,
+	0x6e, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x72, 0x6f,
+	0x6f, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x42, 0x30,
+	0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x69, 0x6e,
+	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
diff --git a/internal/datastore/datastore_v3.proto b/internal/datastore/datastore_v3.proto
index b87384df..19770519 100755
--- a/internal/datastore/datastore_v3.proto
+++ b/internal/datastore/datastore_v3.proto
@@ -8,7 +8,7 @@ message Action{}
 message PropertyValue {
   optional int64 int64Value = 1;
   optional bool booleanValue = 2;
-  optional string stringValue = 3;
+  bytes stringValue = 3;
   optional double doubleValue = 4;
 
   message PointValueType {
diff --git a/log/log.go b/log/log.go
index 27a89798..bf8d581a 100644
--- a/log/log.go
+++ b/log/log.go
@@ -179,9 +179,9 @@ func protoToAppLogs(logLines []*pb.LogLine) []AppLog {
 
 	for i, line := range logLines {
 		appLogs[i] = AppLog{
-			Time:    time.Unix(0, *line.Time*1e3),
-			Level:   int(*line.Level),
-			Message: *line.LogMessage,
+			Time:    time.Unix(0, line.Time*1e3),
+			Level:   int(line.Level),
+			Message: line.LogMessage,
 		}
 	}
 
@@ -197,27 +197,27 @@ func protoToRecord(rl *pb.RequestLog) *Record {
 		offset = nil
 	}
 	return &Record{
-		AppID:             *rl.AppId,
+		AppID:             rl.AppId,
 		ModuleID:          rl.GetModuleId(),
-		VersionID:         *rl.VersionId,
+		VersionID:         rl.VersionId,
 		RequestID:         rl.RequestId,
 		Offset:            offset,
-		IP:                *rl.Ip,
+		IP:                rl.Ip,
 		Nickname:          rl.GetNickname(),
 		AppEngineRelease:  string(rl.GetAppEngineRelease()),
-		StartTime:         time.Unix(0, *rl.StartTime*1e3),
-		EndTime:           time.Unix(0, *rl.EndTime*1e3),
-		Latency:           time.Duration(*rl.Latency) * time.Microsecond,
-		MCycles:           *rl.Mcycles,
-		Method:            *rl.Method,
-		Resource:          *rl.Resource,
-		HTTPVersion:       *rl.HttpVersion,
-		Status:            *rl.Status,
-		ResponseSize:      *rl.ResponseSize,
+		StartTime:         time.Unix(0, rl.StartTime*1e3),
+		EndTime:           time.Unix(0, rl.EndTime*1e3),
+		Latency:           time.Duration(rl.Latency) * time.Microsecond,
+		MCycles:           rl.Mcycles,
+		Method:            rl.Method,
+		Resource:          rl.Resource,
+		HTTPVersion:       rl.HttpVersion,
+		Status:            rl.Status,
+		ResponseSize:      rl.ResponseSize,
 		Referrer:          rl.GetReferrer(),
 		UserAgent:         rl.GetUserAgent(),
-		URLMapEntry:       *rl.UrlMapEntry,
-		Combined:          *rl.Combined,
+		URLMapEntry:       rl.UrlMapEntry,
+		Combined:          rl.Combined,
 		Host:              rl.GetHost(),
 		Cost:              rl.GetCost(),
 		TaskQueueName:     rl.GetTaskQueueName(),
@@ -243,7 +243,7 @@ func (params *Query) Run(c context.Context) *Result {
 
 func makeRequest(params *Query, appID, versionID string) (*pb.LogReadRequest, error) {
 	req := &pb.LogReadRequest{}
-	req.AppId = &appID
+	req.AppId = appID
 	if !params.StartTime.IsZero() {
 		req.StartTime = proto.Int64(params.StartTime.UnixNano() / 1e3)
 	}
diff --git a/log/log_test.go b/log/log_test.go
index 5cbf4742..1f50c3dd 100644
--- a/log/log_test.go
+++ b/log/log_test.go
@@ -24,7 +24,7 @@ func TestQueryToRequest(t *testing.T) {
 			desc:  "Empty",
 			query: &Query{},
 			want: &pb.LogReadRequest{
-				AppId:     proto.String("s~fake"),
+				AppId:     "s~fake",
 				VersionId: []string{"v12"},
 			},
 		},
@@ -34,7 +34,7 @@ func TestQueryToRequest(t *testing.T) {
 				Versions: []string{"alpha", "backend:beta"},
 			},
 			want: &pb.LogReadRequest{
-				AppId: proto.String("s~fake"),
+				AppId: "s~fake",
 				ModuleVersion: []*pb.LogModuleVersion{
 					{
 						VersionId: proto.String("alpha"),
@@ -63,21 +63,21 @@ func TestQueryToRequest(t *testing.T) {
 func TestProtoToRecord(t *testing.T) {
 	// We deliberately leave ModuleId and other optional fields unset.
 	p := &pb.RequestLog{
-		AppId:        proto.String("s~fake"),
-		VersionId:    proto.String("1"),
+		AppId:        "s~fake",
+		VersionId:    "1",
 		RequestId:    []byte("deadbeef"),
-		Ip:           proto.String("127.0.0.1"),
-		StartTime:    proto.Int64(431044244000000),
-		EndTime:      proto.Int64(431044724000000),
-		Latency:      proto.Int64(480000000),
-		Mcycles:      proto.Int64(7),
-		Method:       proto.String("GET"),
-		Resource:     proto.String("/app"),
-		HttpVersion:  proto.String("1.1"),
-		Status:       proto.Int32(418),
-		ResponseSize: proto.Int64(1337),
-		UrlMapEntry:  proto.String("_go_app"),
-		Combined:     proto.String("apache log"),
+		Ip:           "127.0.0.1",
+		StartTime:    431044244000000,
+		EndTime:      431044724000000,
+		Latency:      480000000,
+		Mcycles:      7,
+		Method:       "GET",
+		Resource:     "/app",
+		HttpVersion:  "1.1",
+		Status:       418,
+		ResponseSize: 1337,
+		UrlMapEntry:  "_go_app",
+		Combined:     "apache log",
 	}
 	// Sanity check that all required fields are set.
 	if _, err := proto.Marshal(p); err != nil {
@@ -85,7 +85,7 @@ func TestProtoToRecord(t *testing.T) {
 	}
 	want := &Record{
 		AppID:        "s~fake",
-		ModuleID:     "default",
+		ModuleID:     "",
 		VersionID:    "1",
 		RequestID:    []byte("deadbeef"),
 		IP:           "127.0.0.1",
@@ -100,7 +100,7 @@ func TestProtoToRecord(t *testing.T) {
 		ResponseSize: 1337,
 		URLMapEntry:  "_go_app",
 		Combined:     "apache log",
-		Finished:     true,
+		Finished:     false,
 		AppLogs:      []AppLog{},
 	}
 	got := protoToRecord(p)
diff --git a/mail/mail.go b/mail/mail.go
index 92e24a68..9443afb0 100644
--- a/mail/mail.go
+++ b/mail/mail.go
@@ -77,11 +77,11 @@ func SendToAdmins(c context.Context, msg *Message) error {
 
 func send(c context.Context, method string, msg *Message) error {
 	req := &pb.MailMessage{
-		Sender:  &msg.Sender,
+		Sender:  msg.Sender,
 		To:      msg.To,
 		Cc:      msg.Cc,
 		Bcc:     msg.Bcc,
-		Subject: &msg.Subject,
+		Subject: msg.Subject,
 	}
 	if msg.ReplyTo != "" {
 		req.ReplyTo = &msg.ReplyTo
@@ -96,7 +96,7 @@ func send(c context.Context, method string, msg *Message) error {
 		req.Attachment = make([]*pb.MailAttachment, len(msg.Attachments))
 		for i, att := range msg.Attachments {
 			req.Attachment[i] = &pb.MailAttachment{
-				FileName: proto.String(att.Name),
+				FileName: att.Name,
 				Data:     att.Data,
 			}
 			if att.ContentID != "" {
@@ -107,8 +107,8 @@ func send(c context.Context, method string, msg *Message) error {
 	for key, vs := range msg.Headers {
 		for _, v := range vs {
 			req.Header = append(req.Header, &pb.MailHeader{
-				Name:  proto.String(key),
-				Value: proto.String(v),
+				Name:  key,
+				Value: v,
 			})
 		}
 	}
diff --git a/mail/mail_test.go b/mail/mail_test.go
index f31b75f7..0d754816 100644
--- a/mail/mail_test.go
+++ b/mail/mail_test.go
@@ -43,18 +43,18 @@ func TestMessageConstruction(t *testing.T) {
 		t.Fatalf("Send: %v", err)
 	}
 	want := &pb.MailMessage{
-		Sender:   proto.String("dsymonds@example.com"),
+		Sender:   "dsymonds@example.com",
 		To:       []string{"nigeltao@example.com"},
-		Subject:  proto.String(""),
+		Subject:  "",
 		TextBody: proto.String("Hey, lunch time?"),
 		Attachment: []*pb.MailAttachment{
 			{
-				FileName:  proto.String("att1.txt"),
+				FileName:  "att1.txt",
 				Data:      []byte("data1"),
 				ContentID: proto.String("<att1>"),
 			},
 			{
-				FileName: proto.String("att2.txt"),
+				FileName: "att2.txt",
 				Data:     []byte("data2"),
 			},
 		},
diff --git a/memcache/memcache.go b/memcache/memcache.go
index 4c8b9f06..8f5751a8 100644
--- a/memcache/memcache.go
+++ b/memcache/memcache.go
@@ -104,7 +104,7 @@ const (
 )
 
 // protoToItem converts a protocol buffer item to a Go struct.
-func protoToItem(p *pb.MemcacheGetResponse_Item) *Item {
+func protoToItem(p *pb.MemcacheGetResponse_ItemType) *Item {
 	if p.GetIsDeleteLocked() {
 		// "delete lock" for a duration is not a feature available in the Go lib.
 		// Such items may exist in memcache though, e.g. created by the Java lib.
@@ -224,10 +224,10 @@ func DeleteMulti(c context.Context, key []string) error {
 		return nil
 	}
 	req := &pb.MemcacheDeleteRequest{
-		Item: make([]*pb.MemcacheDeleteRequest_Item, len(key)),
+		Item: make([]*pb.MemcacheDeleteRequest_ItemType, len(key)),
 	}
 	for i, k := range key {
-		req.Item[i] = &pb.MemcacheDeleteRequest_Item{Key: []byte(k)}
+		req.Item[i] = &pb.MemcacheDeleteRequest_ItemType{Key: []byte(k)}
 	}
 	res := &pb.MemcacheDeleteResponse{}
 	if err := internal.Call(c, "memcache", "Delete", req, res); err != nil {
@@ -304,10 +304,10 @@ func set(c context.Context, item []*Item, value [][]byte, policy pb.MemcacheSetR
 		return nil
 	}
 	req := &pb.MemcacheSetRequest{
-		Item: make([]*pb.MemcacheSetRequest_Item, len(item)),
+		Item: make([]*pb.MemcacheSetRequest_ItemType, len(item)),
 	}
 	for i, t := range item {
-		p := &pb.MemcacheSetRequest_Item{
+		p := &pb.MemcacheSetRequest_ItemType{
 			Key: []byte(t.Key),
 		}
 		if value == nil {
@@ -545,12 +545,12 @@ func Stats(c context.Context) (*Statistics, error) {
 		return nil, ErrNoStats
 	}
 	return &Statistics{
-		Hits:     *res.Stats.Hits,
-		Misses:   *res.Stats.Misses,
-		ByteHits: *res.Stats.ByteHits,
-		Items:    *res.Stats.Items,
-		Bytes:    *res.Stats.Bytes,
-		Oldest:   int64(*res.Stats.OldestItemAge),
+		Hits:     res.Stats.Hits,
+		Misses:   res.Stats.Misses,
+		ByteHits: res.Stats.ByteHits,
+		Items:    res.Stats.Items,
+		Bytes:    res.Stats.Bytes,
+		Oldest:   int64(res.Stats.OldestItemAge),
 	}, nil
 }
 
diff --git a/memcache/memcache_test.go b/memcache/memcache_test.go
index e09ccf36..7f48d074 100644
--- a/memcache/memcache_test.go
+++ b/memcache/memcache_test.go
@@ -49,7 +49,7 @@ func TestGetResponseHit(t *testing.T) {
 	value := "Where the buffalo roam"
 
 	c := aetesting.FakeSingleContext(t, "memcache", "Get", func(_ *pb.MemcacheGetRequest, res *pb.MemcacheGetResponse) error {
-		res.Item = []*pb.MemcacheGetResponse_Item{
+		res.Item = []*pb.MemcacheGetResponse_ItemType{
 			{Key: []byte(key), Value: []byte(value)},
 		}
 		return nil
@@ -279,7 +279,7 @@ func TestPeekRequest(t *testing.T) {
 		}
 
 		// Response
-		res.Item = []*pb.MemcacheGetResponse_Item{
+		res.Item = []*pb.MemcacheGetResponse_ItemType{
 			{
 				Key:   []byte(key),
 				Value: []byte(value),
diff --git a/module/module.go b/module/module.go
index cbba88b0..1fe27dcb 100644
--- a/module/module.go
+++ b/module/module.go
@@ -13,8 +13,6 @@ package module // import "google.golang.org/appengine/module"
 import (
 	"context"
 
-	"google.golang.org/protobuf/proto"
-
 	"google.golang.org/appengine/internal"
 	pb "google.golang.org/appengine/internal/modules"
 )
@@ -42,7 +40,7 @@ func NumInstances(c context.Context, module, version string) (int, error) {
 	if err := internal.Call(c, "modules", "GetNumInstances", req, res); err != nil {
 		return 0, err
 	}
-	return int(*res.Instances), nil
+	return int(res.Instances), nil
 }
 
 // SetNumInstances sets the number of instances of the given module.version to the
@@ -56,7 +54,7 @@ func SetNumInstances(c context.Context, module, version string, instances int) e
 	if version != "" {
 		req.Version = &version
 	}
-	req.Instances = proto.Int64(int64(instances))
+	req.Instances = int64(instances)
 	res := &pb.SetNumInstancesResponse{}
 	return internal.Call(c, "modules", "SetNumInstances", req, res)
 }
@@ -90,10 +88,10 @@ func DefaultVersion(c context.Context, module string) (string, error) {
 func Start(c context.Context, module, version string) error {
 	req := &pb.StartModuleRequest{}
 	if module != "" {
-		req.Module = &module
+		req.Module = module
 	}
 	if version != "" {
-		req.Version = &version
+		req.Version = version
 	}
 	res := &pb.StartModuleResponse{}
 	return internal.Call(c, "modules", "StartModule", req, res)
diff --git a/module/module_test.go b/module/module_test.go
index 7f665104..68b2a33a 100644
--- a/module/module_test.go
+++ b/module/module_test.go
@@ -8,8 +8,6 @@ import (
 	"reflect"
 	"testing"
 
-	"google.golang.org/protobuf/proto"
-
 	"google.golang.org/appengine/internal/aetesting"
 	pb "google.golang.org/appengine/internal/modules"
 )
@@ -41,7 +39,7 @@ func TestSetNumInstances(t *testing.T) {
 		if *req.Version != version {
 			t.Errorf("Version = %v, want %v", req.Version, version)
 		}
-		if *req.Instances != instances {
+		if req.Instances != instances {
 			t.Errorf("Instances = %v, want %d", req.Instances, instances)
 		}
 		return nil
@@ -75,7 +73,7 @@ func TestDefaultVersion(t *testing.T) {
 		if *req.Module != module {
 			t.Errorf("Module = %v, want %v", req.Module, module)
 		}
-		res.Version = proto.String(version)
+		res.Version = version
 		return nil
 	})
 	got, err := DefaultVersion(c, module)
@@ -89,10 +87,10 @@ func TestDefaultVersion(t *testing.T) {
 
 func TestStart(t *testing.T) {
 	c := aetesting.FakeSingleContext(t, "modules", "StartModule", func(req *pb.StartModuleRequest, res *pb.StartModuleResponse) error {
-		if *req.Module != module {
+		if req.Module != module {
 			t.Errorf("Module = %v, want %v", req.Module, module)
 		}
-		if *req.Version != version {
+		if req.Version != version {
 			t.Errorf("Version = %v, want %v", req.Version, version)
 		}
 		return nil
diff --git a/remote_api/client.go b/remote_api/client.go
index 9df48ed2..43312cc7 100644
--- a/remote_api/client.go
+++ b/remote_api/client.go
@@ -21,6 +21,7 @@ import (
 	"strings"
 	"time"
 
+	"google.golang.org/protobuf/encoding/prototext"
 	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/internal"
@@ -105,8 +106,8 @@ func (c *Client) call(ctx context.Context, service, method string, in, out proto
 	}
 
 	remReq := &pb.Request{
-		ServiceName: proto.String(service),
-		Method:      proto.String(method),
+		ServiceName: service,
+		Method:      method,
 		Request:     req,
 		// NOTE(djd): RequestId is unused in the server.
 	}
@@ -144,7 +145,7 @@ func (c *Client) call(ctx context.Context, service, method string, in, out proto
 	}
 
 	if remResp.Response == nil {
-		return fmt.Errorf("unexpected response: %s", proto.MarshalTextString(remResp))
+		return fmt.Errorf("unexpected response: %s", prototext.Format(remResp))
 	}
 
 	return proto.Unmarshal(remResp.Response, out)
diff --git a/remote_api/remote_api.go b/remote_api/remote_api.go
index c11bd015..67e76c14 100644
--- a/remote_api/remote_api.go
+++ b/remote_api/remote_api.go
@@ -16,6 +16,8 @@ import (
 	"strconv"
 
 	"google.golang.org/protobuf/proto"
+	"google.golang.org/protobuf/reflect/protoreflect"
+	"google.golang.org/protobuf/runtime/protoimpl"
 
 	"google.golang.org/appengine"
 	"google.golang.org/appengine/internal"
@@ -77,7 +79,7 @@ func handle(w http.ResponseWriter, req *http.Request) {
 		return
 	}
 
-	service, method := *remReq.ServiceName, *remReq.Method
+	service, method := remReq.ServiceName, remReq.Method
 	if !requestSupported(service, method) {
 		w.WriteHeader(http.StatusBadRequest)
 		log.Errorf(c, "Unsupported RPC /%s.%s", service, method)
@@ -93,15 +95,15 @@ func handle(w http.ResponseWriter, req *http.Request) {
 		remRes.Response = rawRes.buf
 	} else if ae, ok := err.(*internal.APIError); ok {
 		remRes.ApplicationError = &pb.ApplicationError{
-			Code:   &ae.Code,
-			Detail: &ae.Detail,
+			Code:   ae.Code,
+			Detail: ae.Detail,
 		}
 	} else {
 		// This shouldn't normally happen.
 		log.Errorf(c, "appengine/remote_api: Unexpected error of type %T: %v", err, err)
 		remRes.ApplicationError = &pb.ApplicationError{
-			Code:   proto.Int32(0),
-			Detail: proto.String(err.Error()),
+			Code:   0,
+			Detail: err.Error(),
 		}
 	}
 	out, err := proto.Marshal(remRes)
@@ -125,6 +127,20 @@ type rawMessage struct {
 	buf []byte
 }
 
+var file_rawmessage_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+
+func (rm *rawMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_rawmessage_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && rm != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(rm))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(rm)
+}
+
 func (rm *rawMessage) Marshal() ([]byte, error) {
 	return rm.buf, nil
 }
diff --git a/search/search.go b/search/search.go
index 8e8796c8..422b0d54 100644
--- a/search/search.go
+++ b/search/search.go
@@ -111,7 +111,7 @@ func Open(name string) (*Index, error) {
 	}
 	return &Index{
 		spec: pb.IndexSpec{
-			Name: &name,
+			Name: name,
 		},
 	}, nil
 }
@@ -383,7 +383,7 @@ func moreSearch(t *Iterator) error {
 	req := &pb.SearchRequest{
 		Params: &pb.SearchParams{
 			IndexSpec:  &t.index.spec,
-			Query:      &t.searchQuery,
+			Query:      t.searchQuery,
 			Cursor:     t.searchCursor,
 			CursorType: pb.SearchParams_PER_RESULT.Enum(),
 			FieldSpec: &pb.FieldSpec{
@@ -415,9 +415,9 @@ func moreSearch(t *Iterator) error {
 		}
 	}
 	for _, e := range t.exprs {
-		req.Params.FieldSpec.Expression = append(req.Params.FieldSpec.Expression, &pb.FieldSpec_Expression{
-			Name:       proto.String(e.Name),
-			Expression: proto.String(e.Expr),
+		req.Params.FieldSpec.Expression = append(req.Params.FieldSpec.Expression, &pb.FieldSpec_ExpressionType{
+			Name:       e.Name,
+			Expression: e.Expr,
 		})
 	}
 	for _, f := range t.facetOpts {
@@ -439,7 +439,7 @@ func moreSearch(t *Iterator) error {
 	if len(res.FacetResult) > 0 {
 		t.facetRes = res.FacetResult
 	}
-	t.count = int(*res.MatchedCount)
+	t.count = int(res.MatchedCount)
 	if t.limit > 0 {
 		t.more = nil
 	} else {
@@ -559,7 +559,7 @@ type facetOpt struct {
 }
 
 func (o *facetOpt) setParams(params *pb.SearchParams) error {
-	req := &pb.FacetRequest{Name: &o.name}
+	req := &pb.FacetRequest{Name: o.name}
 	params.IncludeFacet = append(params.IncludeFacet, req)
 	if len(o.values) == 0 {
 		return nil
@@ -693,7 +693,7 @@ var (
 func sortToProto(sort *SortOptions, params *pb.SearchParams) error {
 	for _, e := range sort.Expressions {
 		spec := &pb.SortSpec{
-			SortExpression: proto.String(e.Expr),
+			SortExpression: e.Expr,
 		}
 		if e.Reverse {
 			spec.SortDescending = proto.Bool(false)
@@ -727,7 +727,7 @@ func sortToProto(sort *SortOptions, params *pb.SearchParams) error {
 func refinementsToProto(refinements []Facet, params *pb.SearchParams) error {
 	for _, r := range refinements {
 		ref := &pb.FacetRefinement{
-			Name: proto.String(r.Name),
+			Name: r.Name,
 		}
 		switch v := r.Value.(type) {
 		case Atom:
@@ -995,9 +995,9 @@ func fieldsToProto(src []Field) ([]*pb.Field, error) {
 					f.Name, x)
 			}
 			fieldValue.Type = pb.FieldValue_GEO.Enum()
-			fieldValue.Geo = &pb.FieldValue_Geo{
-				Lat: proto.Float64(x.Lat),
-				Lng: proto.Float64(x.Lng),
+			fieldValue.Geo = &pb.FieldValue_GeoType{
+				Lat: x.Lat,
+				Lng: x.Lng,
 			}
 		default:
 			return nil, fmt.Errorf("search: unsupported field type: %v", reflect.TypeOf(f.Value))
@@ -1017,7 +1017,7 @@ func fieldsToProto(src []Field) ([]*pb.Field, error) {
 			return nil, fmt.Errorf("search: %q field is invalid UTF-8: %q", f.Name, *p)
 		}
 		dst = append(dst, &pb.Field{
-			Name:  proto.String(f.Name),
+			Name:  f.Name,
 			Value: fieldValue,
 		})
 	}
@@ -1048,7 +1048,7 @@ func facetsToProto(src []Facet) ([]*pb.Facet, error) {
 			return nil, fmt.Errorf("search: unsupported facet type: %v", reflect.TypeOf(f.Value))
 		}
 		dst = append(dst, &pb.Facet{
-			Name:  proto.String(f.Name),
+			Name:  f.Name,
 			Value: facetValue,
 		})
 	}
diff --git a/search/search_test.go b/search/search_test.go
index df918cf2..cc6d84e3 100644
--- a/search/search_test.go
+++ b/search/search_test.go
@@ -83,11 +83,11 @@ var (
 		newStringValueField("HTML", testString, pb.FieldValue_HTML),
 		newStringValueField("Float", floatOut, pb.FieldValue_NUMBER),
 		{
-			Name: proto.String("Location"),
+			Name: "Location",
 			Value: &pb.FieldValue{
-				Geo: &pb.FieldValue_Geo{
-					Lat: proto.Float64(latitude),
-					Lng: proto.Float64(longitude),
+				Geo: &pb.FieldValue_GeoType{
+					Lat: latitude,
+					Lng: longitude,
 				},
 				Type: pb.FieldValue_GEO.Enum(),
 			},
@@ -99,7 +99,7 @@ var (
 func init() {
 	for _, f := range searchFields {
 		if f.Name == "String" || f.Name == "HTML" {
-			f.Language = "en"
+			f.Language = ""
 		}
 		searchFieldsWithLang = append(searchFieldsWithLang, f)
 	}
@@ -107,7 +107,7 @@ func init() {
 
 func newStringValueField(name, value string, valueType pb.FieldValue_ContentType) *pb.Field {
 	return &pb.Field{
-		Name: proto.String(name),
+		Name: name,
 		Value: &pb.FieldValue{
 			StringValue: proto.String(value),
 			Type:        valueType.Enum(),
@@ -117,7 +117,7 @@ func newStringValueField(name, value string, valueType pb.FieldValue_ContentType
 
 func newFacet(name, value string, valueType pb.FacetValue_ContentType) *pb.Facet {
 	return &pb.Facet{
-		Name: proto.String(name),
+		Name: name,
 		Value: &pb.FacetValue{
 			StringValue: proto.String(value),
 			Type:        valueType.Enum(),
@@ -193,7 +193,7 @@ func TestLoadFieldList(t *testing.T) {
 
 func TestLangFields(t *testing.T) {
 	fl := &FieldList{
-		{Name: "Foo", Value: "I am English", Language: "en"},
+		{Name: "Foo", Value: "I am English", Language: ""},
 		{Name: "Bar", Value: "私は日本人だ", Language: "ja"},
 	}
 	var got FieldList
@@ -491,8 +491,8 @@ func TestLimit(t *testing.T) {
 		if req.Params.Limit != nil {
 			limit = int(*req.Params.Limit)
 		}
-		res.Status = &pb.RequestStatus{Code: pb.SearchServiceError_OK.Enum()}
-		res.MatchedCount = proto.Int64(int64(limit))
+		res.Status = &pb.RequestStatus{Code: pb.SearchServiceError_OK}
+		res.MatchedCount = int64(limit)
 		for i := 0; i < limit; i++ {
 			res.Result = append(res.Result, &pb.SearchResult{Document: &pb.Document{}})
 			res.Cursor = proto.String("moreresults")
@@ -541,7 +541,7 @@ func TestPut(t *testing.T) {
 					{Field: protoFields, OrderId: proto.Int32(42), OrderIdSource: pb.Document_SUPPLIED.Enum()},
 				},
 				IndexSpec: &pb.IndexSpec{
-					Name: proto.String("Doc"),
+					Name: "Doc",
 				},
 			},
 		}
@@ -550,7 +550,7 @@ func TestPut(t *testing.T) {
 		}
 		*out = pb.IndexDocumentResponse{
 			Status: []*pb.RequestStatus{
-				{Code: pb.SearchServiceError_OK.Enum()},
+				{Code: pb.SearchServiceError_OK},
 			},
 			DocId: []string{
 				"doc_id",
@@ -587,7 +587,7 @@ func TestPutAutoOrderID(t *testing.T) {
 		}
 		*out = pb.IndexDocumentResponse{
 			Status: []*pb.RequestStatus{
-				{Code: pb.SearchServiceError_OK.Enum()},
+				{Code: pb.SearchServiceError_OK},
 			},
 			DocId: []string{
 				"doc_id",
@@ -611,7 +611,7 @@ func TestPutBadStatus(t *testing.T) {
 		*out = pb.IndexDocumentResponse{
 			Status: []*pb.RequestStatus{
 				{
-					Code:        pb.SearchServiceError_INVALID_REQUEST.Enum(),
+					Code:        pb.SearchServiceError_INVALID_REQUEST,
 					ErrorDetail: proto.String("insufficient gophers"),
 				},
 			},
@@ -641,7 +641,7 @@ func TestPutMultiNilIDSlice(t *testing.T) {
 		}
 		*out = pb.IndexDocumentResponse{
 			Status: []*pb.RequestStatus{
-				{Code: pb.SearchServiceError_OK.Enum()},
+				{Code: pb.SearchServiceError_OK},
 			},
 			DocId: []string{
 				"doc_id",
@@ -664,8 +664,8 @@ func TestPutMultiError(t *testing.T) {
 	c := aetesting.FakeSingleContext(t, "search", "IndexDocument", func(in *pb.IndexDocumentRequest, out *pb.IndexDocumentResponse) error {
 		*out = pb.IndexDocumentResponse{
 			Status: []*pb.RequestStatus{
-				{Code: pb.SearchServiceError_OK.Enum()},
-				{Code: pb.SearchServiceError_PERMISSION_DENIED.Enum(), ErrorDetail: proto.String("foo")},
+				{Code: pb.SearchServiceError_OK},
+				{Code: pb.SearchServiceError_PERMISSION_DENIED, ErrorDetail: proto.String("foo")},
 			},
 			DocId: []string{
 				"id1",
@@ -751,10 +751,10 @@ func TestSortOptions(t *testing.T) {
 				Scorer: MatchScorer,
 			},
 			wantSort: []*pb.SortSpec{
-				{SortExpression: proto.String("dog")},
-				{SortExpression: proto.String("cat"), SortDescending: proto.Bool(false)},
-				{SortExpression: proto.String("gopher"), DefaultValueText: proto.String("blue")},
-				{SortExpression: proto.String("fish"), DefaultValueNumeric: proto.Float64(2)},
+				{SortExpression: "dog"},
+				{SortExpression: "cat", SortDescending: proto.Bool(false)},
+				{SortExpression: "gopher", DefaultValueText: proto.String("blue")},
+				{SortExpression: "fish", DefaultValueNumeric: proto.Float64(2)},
 			},
 			wantScorer: &pb.ScorerSpec{
 				Limit:  proto.Int32(42),
@@ -835,9 +835,9 @@ func TestFieldSpec(t *testing.T) {
 				},
 			},
 			want: &pb.FieldSpec{
-				Expression: []*pb.FieldSpec_Expression{
-					{Name: proto.String("one"), Expression: proto.String("price * quantity")},
-					{Name: proto.String("two"), Expression: proto.String("min(daily_use, 10) * rate")},
+				Expression: []*pb.FieldSpec_ExpressionType{
+					{Name: "one", Expression: "price * quantity"},
+					{Name: "two", Expression: "min(daily_use, 10) * rate"},
 				},
 			},
 		},
@@ -931,11 +931,11 @@ func TestBasicSearchOpts(t *testing.T) {
 			},
 			want: &pb.SearchParams{
 				IncludeFacet: []*pb.FacetRequest{
-					{Name: proto.String("colour")},
-					{Name: proto.String("size"), Params: &pb.FacetRequestParam{
+					{Name: "colour"},
+					{Name: "size", Params: &pb.FacetRequestParam{
 						ValueConstraint: []string{"M", "L"},
 					}},
-					{Name: proto.String("price"), Params: &pb.FacetRequestParam{
+					{Name: "price", Params: &pb.FacetRequestParam{
 						Range: []*pb.FacetRange{
 							{End: proto.String("7e+00")},
 							{Start: proto.String("7e+00"), End: proto.String("1.4e+01")},
@@ -1002,8 +1002,8 @@ func TestBasicSearchOpts(t *testing.T) {
 				return nil
 			}
 			// Set default fields.
-			tt.want.Query = proto.String("gopher")
-			tt.want.IndexSpec = &pb.IndexSpec{Name: proto.String("Doc")}
+			tt.want.Query = "gopher"
+			tt.want.IndexSpec = &pb.IndexSpec{Name: "Doc"}
 			tt.want.CursorType = pb.SearchParams_PER_RESULT.Enum()
 			tt.want.FieldSpec = &pb.FieldSpec{}
 			if got := req.Params; !reflect.DeepEqual(got, tt.want) {
@@ -1054,10 +1054,10 @@ func TestFacetRefinements(t *testing.T) {
 				{Name: "legs", Value: Range{Start: 3, End: 5}},
 			},
 			want: []*pb.FacetRefinement{
-				{Name: proto.String("fur"), Value: proto.String("fluffy")},
-				{Name: proto.String("age"), Range: &pb.FacetRefinement_Range{End: proto.String("1.23e+02")}},
-				{Name: proto.String("age"), Range: &pb.FacetRefinement_Range{Start: proto.String("0e+00")}},
-				{Name: proto.String("legs"), Range: &pb.FacetRefinement_Range{Start: proto.String("3e+00"), End: proto.String("5e+00")}},
+				{Name: "fur", Value: proto.String("fluffy")},
+				{Name: "age", Range: &pb.FacetRefinement_Range{End: proto.String("1.23e+02")}},
+				{Name: "age", Range: &pb.FacetRefinement_Range{Start: proto.String("0e+00")}},
+				{Name: "legs", Range: &pb.FacetRefinement_Range{Start: proto.String("3e+00"), End: proto.String("5e+00")}},
 			},
 		},
 		{
@@ -1156,7 +1156,7 @@ func TestDelete(t *testing.T) {
 		expectedIn := &pb.DeleteDocumentRequest{
 			Params: &pb.DeleteDocumentParams{
 				DocId:     []string{"id"},
-				IndexSpec: &pb.IndexSpec{Name: proto.String("Doc")},
+				IndexSpec: &pb.IndexSpec{Name: "Doc"},
 			},
 		}
 		if !proto.Equal(in, expectedIn) {
@@ -1164,7 +1164,7 @@ func TestDelete(t *testing.T) {
 		}
 		*out = pb.DeleteDocumentResponse{
 			Status: []*pb.RequestStatus{
-				{Code: pb.SearchServiceError_OK.Enum()},
+				{Code: pb.SearchServiceError_OK},
 			},
 		}
 		return nil
@@ -1185,7 +1185,7 @@ func TestDeleteMulti(t *testing.T) {
 		expectedIn := &pb.DeleteDocumentRequest{
 			Params: &pb.DeleteDocumentParams{
 				DocId:     []string{"id1", "id2"},
-				IndexSpec: &pb.IndexSpec{Name: proto.String("Doc")},
+				IndexSpec: &pb.IndexSpec{Name: "Doc"},
 			},
 		}
 		if !proto.Equal(in, expectedIn) {
@@ -1193,8 +1193,8 @@ func TestDeleteMulti(t *testing.T) {
 		}
 		*out = pb.DeleteDocumentResponse{
 			Status: []*pb.RequestStatus{
-				{Code: pb.SearchServiceError_OK.Enum()},
-				{Code: pb.SearchServiceError_OK.Enum()},
+				{Code: pb.SearchServiceError_OK},
+				{Code: pb.SearchServiceError_OK},
 			},
 		}
 		return nil
@@ -1215,7 +1215,7 @@ func TestDeleteWrongNumberOfResults(t *testing.T) {
 		expectedIn := &pb.DeleteDocumentRequest{
 			Params: &pb.DeleteDocumentParams{
 				DocId:     []string{"id1", "id2"},
-				IndexSpec: &pb.IndexSpec{Name: proto.String("Doc")},
+				IndexSpec: &pb.IndexSpec{Name: "Doc"},
 			},
 		}
 		if !proto.Equal(in, expectedIn) {
@@ -1223,7 +1223,7 @@ func TestDeleteWrongNumberOfResults(t *testing.T) {
 		}
 		*out = pb.DeleteDocumentResponse{
 			Status: []*pb.RequestStatus{
-				{Code: pb.SearchServiceError_OK.Enum()},
+				{Code: pb.SearchServiceError_OK},
 			},
 		}
 		return nil
@@ -1244,7 +1244,7 @@ func TestDeleteMultiError(t *testing.T) {
 		expectedIn := &pb.DeleteDocumentRequest{
 			Params: &pb.DeleteDocumentParams{
 				DocId:     []string{"id1", "id2"},
-				IndexSpec: &pb.IndexSpec{Name: proto.String("Doc")},
+				IndexSpec: &pb.IndexSpec{Name: "Doc"},
 			},
 		}
 		if !proto.Equal(in, expectedIn) {
@@ -1252,8 +1252,8 @@ func TestDeleteMultiError(t *testing.T) {
 		}
 		*out = pb.DeleteDocumentResponse{
 			Status: []*pb.RequestStatus{
-				{Code: pb.SearchServiceError_OK.Enum()},
-				{Code: pb.SearchServiceError_PERMISSION_DENIED.Enum(), ErrorDetail: proto.String("foo")},
+				{Code: pb.SearchServiceError_OK},
+				{Code: pb.SearchServiceError_PERMISSION_DENIED, ErrorDetail: proto.String("foo")},
 			},
 		}
 		return nil
diff --git a/taskqueue/taskqueue.go b/taskqueue/taskqueue.go
index e92141ce..a108df14 100644
--- a/taskqueue/taskqueue.go
+++ b/taskqueue/taskqueue.go
@@ -216,7 +216,7 @@ func newAddReq(c context.Context, task *Task, queueName string) (*pb.TaskQueueAd
 	req := &pb.TaskQueueAddRequest{
 		QueueName: []byte(queueName),
 		TaskName:  []byte(task.Name),
-		EtaUsec:   proto.Int64(eta.UnixNano() / 1e3),
+		EtaUsec:   eta.UnixNano() / 1e3,
 	}
 	method := task.method()
 	if method == "PULL" {
@@ -236,7 +236,7 @@ func newAddReq(c context.Context, task *Task, queueName string) (*pb.TaskQueueAd
 		req.Url = []byte(path)
 		for k, vs := range task.Header {
 			for _, v := range vs {
-				req.Header = append(req.Header, &pb.TaskQueueAddRequest_Header{
+				req.Header = append(req.Header, &pb.TaskQueueAddRequest_HeaderType{
 					Key:   []byte(k),
 					Value: []byte(v),
 				})
@@ -250,7 +250,7 @@ func newAddReq(c context.Context, task *Task, queueName string) (*pb.TaskQueueAd
 		if _, ok := task.Header[currentNamespace]; !ok {
 			// Fetch the current namespace of this request.
 			ns := internal.NamespaceFromContext(c)
-			req.Header = append(req.Header, &pb.TaskQueueAddRequest_Header{
+			req.Header = append(req.Header, &pb.TaskQueueAddRequest_HeaderType{
 				Key:   []byte(currentNamespace),
 				Value: []byte(ns),
 			})
@@ -258,7 +258,7 @@ func newAddReq(c context.Context, task *Task, queueName string) (*pb.TaskQueueAd
 		if _, ok := task.Header[defaultNamespace]; !ok {
 			// Fetch the X-AppEngine-Default-Namespace header of this request.
 			if ns := getDefaultNamespace(c); ns != "" {
-				req.Header = append(req.Header, &pb.TaskQueueAddRequest_Header{
+				req.Header = append(req.Header, &pb.TaskQueueAddRequest_HeaderType{
 					Key:   []byte(defaultNamespace),
 					Value: []byte(ns),
 				})
@@ -324,24 +324,24 @@ func AddMulti(c context.Context, tasks []*Task, queueName string) ([]*Task, erro
 	if err := internal.Call(c, "taskqueue", "BulkAdd", req, res); err != nil {
 		return nil, err
 	}
-	if len(res.Taskresult) != len(tasks) {
+	if len(res.TaskResult) != len(tasks) {
 		return nil, errors.New("taskqueue: server error")
 	}
 	tasksOut := make([]*Task, len(tasks))
-	for i, tr := range res.Taskresult {
+	for i, tr := range res.TaskResult {
 		tasksOut[i] = new(Task)
 		*tasksOut[i] = *tasks[i]
 		tasksOut[i].Method = tasksOut[i].method()
 		if tasksOut[i].Name == "" {
 			tasksOut[i].Name = string(tr.ChosenTaskName)
 		}
-		if *tr.Result != pb.TaskQueueServiceError_OK {
-			if alreadyAddedErrors[*tr.Result] {
+		if tr.Result != pb.TaskQueueServiceError_OK {
+			if alreadyAddedErrors[tr.Result] {
 				me[i] = ErrTaskAlreadyAdded
 			} else {
 				me[i] = &internal.APIError{
 					Service: "taskqueue",
-					Code:    int32(*tr.Result),
+					Code:    int32(tr.Result),
 				}
 			}
 			any = true
@@ -407,8 +407,8 @@ func lease(c context.Context, maxTasks int, queueName string, leaseTime int, gro
 	}
 	req := &pb.TaskQueueQueryAndOwnTasksRequest{
 		QueueName:    []byte(queueName),
-		LeaseSeconds: proto.Float64(float64(leaseTime)),
-		MaxTasks:     proto.Int64(int64(maxTasks)),
+		LeaseSeconds: float64(leaseTime),
+		MaxTasks:     int64(maxTasks),
 		GroupByTag:   proto.Bool(groupByTag),
 		Tag:          tag,
 	}
@@ -422,7 +422,7 @@ func lease(c context.Context, maxTasks int, queueName string, leaseTime int, gro
 			Payload:    t.Body,
 			Name:       string(t.TaskName),
 			Method:     "PULL",
-			ETA:        time.Unix(0, *t.EtaUsec*1e3),
+			ETA:        time.Unix(0, t.EtaUsec*1e3),
 			RetryCount: *t.RetryCount,
 			Tag:        string(t.Tag),
 		}
@@ -467,14 +467,14 @@ func ModifyLease(c context.Context, task *Task, queueName string, leaseTime int)
 	req := &pb.TaskQueueModifyTaskLeaseRequest{
 		QueueName:    []byte(queueName),
 		TaskName:     []byte(task.Name),
-		EtaUsec:      proto.Int64(task.ETA.UnixNano() / 1e3), // Used to verify ownership.
-		LeaseSeconds: proto.Float64(float64(leaseTime)),
+		EtaUsec:      task.ETA.UnixNano() / 1e3, // Used to verify ownership.
+		LeaseSeconds: float64(leaseTime),
 	}
 	res := &pb.TaskQueueModifyTaskLeaseResponse{}
 	if err := internal.Call(c, "taskqueue", "ModifyTaskLease", req, res); err != nil {
 		return err
 	}
-	task.ETA = time.Unix(0, *res.UpdatedEtaUsec*1e3)
+	task.ETA = time.Unix(0, res.UpdatedEtaUsec*1e3)
 	return nil
 }
 
@@ -503,16 +503,16 @@ func QueueStats(c context.Context, queueNames []string) ([]QueueStatistics, erro
 	if err := internal.Call(c, "taskqueue", "FetchQueueStats", req, res); err != nil {
 		return nil, err
 	}
-	qs := make([]QueueStatistics, len(res.Queuestats))
-	for i, qsg := range res.Queuestats {
+	qs := make([]QueueStatistics, len(res.QueueStats))
+	for i, qsg := range res.QueueStats {
 		qs[i] = QueueStatistics{
-			Tasks: int(*qsg.NumTasks),
+			Tasks: int(qsg.NumTasks),
 		}
-		if eta := *qsg.OldestEtaUsec; eta > -1 {
+		if eta := qsg.OldestEtaUsec; eta > -1 {
 			qs[i].OldestETA = time.Unix(0, eta*1e3)
 		}
 		if si := qsg.ScannerInfo; si != nil {
-			qs[i].Executed1Minute = int(*si.ExecutedLastMinute)
+			qs[i].Executed1Minute = int(si.ExecutedLastMinute)
 			qs[i].InFlight = int(si.GetRequestsInFlight())
 			qs[i].EnforcedRate = si.GetEnforcedRate()
 		}
diff --git a/taskqueue/taskqueue_test.go b/taskqueue/taskqueue_test.go
index d9eec50b..1ee17270 100644
--- a/taskqueue/taskqueue_test.go
+++ b/taskqueue/taskqueue_test.go
@@ -65,18 +65,18 @@ func TestAddErrors(t *testing.T) {
 
 func TestAddMulti(t *testing.T) {
 	c := aetesting.FakeSingleContext(t, "taskqueue", "BulkAdd", func(req *pb.TaskQueueBulkAddRequest, res *pb.TaskQueueBulkAddResponse) error {
-		res.Taskresult = []*pb.TaskQueueBulkAddResponse_TaskResult{
+		res.TaskResult = []*pb.TaskQueueBulkAddResponse_TaskResultType{
 			{
-				Result: pb.TaskQueueServiceError_OK.Enum(),
+				Result: pb.TaskQueueServiceError_OK,
 			},
 			{
-				Result: pb.TaskQueueServiceError_TASK_ALREADY_EXISTS.Enum(),
+				Result: pb.TaskQueueServiceError_TASK_ALREADY_EXISTS,
 			},
 			{
-				Result: pb.TaskQueueServiceError_TOMBSTONED_TASK.Enum(),
+				Result: pb.TaskQueueServiceError_TOMBSTONED_TASK,
 			},
 			{
-				Result: pb.TaskQueueServiceError_INTERNAL_ERROR.Enum(),
+				Result: pb.TaskQueueServiceError_INTERNAL_ERROR,
 			},
 		}
 		return nil
diff --git a/urlfetch/urlfetch.go b/urlfetch/urlfetch.go
index 1925a490..47b28266 100644
--- a/urlfetch/urlfetch.go
+++ b/urlfetch/urlfetch.go
@@ -132,8 +132,8 @@ func (t *Transport) RoundTrip(req *http.Request) (res *http.Response, err error)
 	method := pb.URLFetchRequest_RequestMethod(methNum)
 
 	freq := &pb.URLFetchRequest{
-		Method:                        &method,
-		Url:                           proto.String(urlString(req.URL)),
+		Method:                        method,
+		Url:                           urlString(req.URL),
 		FollowRedirects:               proto.Bool(false), // http.Client's responsibility
 		MustValidateServerCertificate: proto.Bool(!t.AllowInvalidServerCertificate),
 	}
@@ -143,9 +143,9 @@ func (t *Transport) RoundTrip(req *http.Request) (res *http.Response, err error)
 
 	for k, vals := range req.Header {
 		for _, val := range vals {
-			freq.Header = append(freq.Header, &pb.URLFetchRequest_Header{
-				Key:   proto.String(k),
-				Value: proto.String(val),
+			freq.Header = append(freq.Header, &pb.URLFetchRequest_HeaderType{
+				Key:   k,
+				Value: val,
 			})
 		}
 	}
@@ -170,7 +170,7 @@ func (t *Transport) RoundTrip(req *http.Request) (res *http.Response, err error)
 	}
 
 	res = &http.Response{}
-	res.StatusCode = int(*fres.StatusCode)
+	res.StatusCode = int(fres.StatusCode)
 	res.Status = fmt.Sprintf("%d %s", res.StatusCode, statusCodeToText(res.StatusCode))
 	res.Header = make(http.Header)
 	res.Request = req
@@ -182,8 +182,8 @@ func (t *Transport) RoundTrip(req *http.Request) (res *http.Response, err error)
 	res.Close = true
 
 	for _, h := range fres.Header {
-		hkey := http.CanonicalHeaderKey(*h.Key)
-		hval := *h.Value
+		hkey := http.CanonicalHeaderKey(h.Key)
+		hval := h.Value
 		if hkey == "Content-Length" {
 			// Will get filled in below for all but HEAD requests.
 			if req.Method == "HEAD" {
diff --git a/user/oauth.go b/user/oauth.go
index 83f79e5e..649880fd 100644
--- a/user/oauth.go
+++ b/user/oauth.go
@@ -48,5 +48,5 @@ func OAuthConsumerKey(c context.Context) (string, error) {
 	if err != nil {
 		return "", err
 	}
-	return *res.OauthConsumerKey, err
+	return res.OauthConsumerKey, err
 }
diff --git a/user/user_test.go b/user/user_test.go
index 2569402a..e9f8d43d 100644
--- a/user/user_test.go
+++ b/user/user_test.go
@@ -77,14 +77,14 @@ func TestBasicUserAPI(t *testing.T) {
 
 func TestLoginURL(t *testing.T) {
 	expectedQuery := &pb.CreateLoginURLRequest{
-		DestinationUrl: proto.String("/destination"),
+		DestinationUrl: "/destination",
 	}
 	const expectedDest = "/redir/dest"
 	c := aetesting.FakeSingleContext(t, "user", "CreateLoginURL", func(req *pb.CreateLoginURLRequest, res *pb.CreateLoginURLResponse) error {
 		if !proto.Equal(req, expectedQuery) {
 			return fmt.Errorf("got %v, want %v", req, expectedQuery)
 		}
-		res.LoginUrl = proto.String(expectedDest)
+		res.LoginUrl = expectedDest
 		return nil
 	})
 
diff --git a/v2/internal/aetesting/fake.go b/v2/internal/aetesting/fake.go
index 20ecb893..e90030ed 100644
--- a/v2/internal/aetesting/fake.go
+++ b/v2/internal/aetesting/fake.go
@@ -13,7 +13,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 )
diff --git a/v2/internal/api.go b/v2/internal/api.go
index 44314a2b..b73b9b5f 100644
--- a/v2/internal/api.go
+++ b/v2/internal/api.go
@@ -20,7 +20,7 @@ import (
 	"sync/atomic"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	remotepb "google.golang.org/appengine/v2/internal/remote_api"
 )
diff --git a/v2/internal/api_common.go b/v2/internal/api_common.go
index ff39bf57..444d57e3 100644
--- a/v2/internal/api_common.go
+++ b/v2/internal/api_common.go
@@ -9,7 +9,7 @@ import (
 	"errors"
 	"os"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 )
 
 type ctxKey string
diff --git a/v2/internal/api_test.go b/v2/internal/api_test.go
index 073e9bfd..49a5b86e 100644
--- a/v2/internal/api_test.go
+++ b/v2/internal/api_test.go
@@ -21,7 +21,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	basepb "google.golang.org/appengine/v2/internal/base"
 	remotepb "google.golang.org/appengine/v2/internal/remote_api"
diff --git a/v2/internal/internal.go b/v2/internal/internal.go
index 36316bb0..48617fdb 100644
--- a/v2/internal/internal.go
+++ b/v2/internal/internal.go
@@ -11,7 +11,7 @@ package internal
 import (
 	"fmt"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	remotepb "google.golang.org/appengine/v2/internal/remote_api"
 )
diff --git a/v2/internal/transaction.go b/v2/internal/transaction.go
index 7198baca..1c7c50de 100644
--- a/v2/internal/transaction.go
+++ b/v2/internal/transaction.go
@@ -11,7 +11,7 @@ import (
 	"errors"
 	"reflect"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	basepb "google.golang.org/appengine/v2/internal/base"
 	pb "google.golang.org/appengine/v2/internal/datastore"
diff --git a/v2/mail/mail.go b/v2/mail/mail.go
index 7b979f41..ebd7c7aa 100644
--- a/v2/mail/mail.go
+++ b/v2/mail/mail.go
@@ -24,7 +24,7 @@ import (
 	"context"
 	"net/mail"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 	bpb "google.golang.org/appengine/v2/internal/base"
diff --git a/v2/mail/mail_test.go b/v2/mail/mail_test.go
index 1f1a4f55..56e4b7dd 100644
--- a/v2/mail/mail_test.go
+++ b/v2/mail/mail_test.go
@@ -7,7 +7,7 @@ package mail
 import (
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal/aetesting"
 	basepb "google.golang.org/appengine/v2/internal/base"
diff --git a/v2/memcache/memcache.go b/v2/memcache/memcache.go
index f6ef1686..57ba988e 100644
--- a/v2/memcache/memcache.go
+++ b/v2/memcache/memcache.go
@@ -36,7 +36,7 @@ import (
 	"errors"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2"
 	"google.golang.org/appengine/v2/internal"
diff --git a/v2/module/module.go b/v2/module/module.go
index 5acadec2..e651f1b9 100644
--- a/v2/module/module.go
+++ b/v2/module/module.go
@@ -13,7 +13,7 @@ package module // import "google.golang.org/appengine/v2/module"
 import (
 	"context"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 	pb "google.golang.org/appengine/v2/internal/modules"
diff --git a/v2/module/module_test.go b/v2/module/module_test.go
index 37cc7d06..3716955b 100644
--- a/v2/module/module_test.go
+++ b/v2/module/module_test.go
@@ -8,7 +8,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal/aetesting"
 	pb "google.golang.org/appengine/v2/internal/modules"
diff --git a/v2/runtime/runtime_test.go b/v2/runtime/runtime_test.go
index 09164424..2b1c72f3 100644
--- a/v2/runtime/runtime_test.go
+++ b/v2/runtime/runtime_test.go
@@ -12,7 +12,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal/aetesting"
 	pb "google.golang.org/appengine/v2/internal/system"
diff --git a/v2/search/search.go b/v2/search/search.go
index d19a08e4..4bb18c57 100644
--- a/v2/search/search.go
+++ b/v2/search/search.go
@@ -21,8 +21,8 @@ import (
 	"time"
 	"unicode/utf8"
 
-	"github.com/golang/protobuf/proto"
 	"golang.org/x/net/context"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2"
 	"google.golang.org/appengine/v2/internal"
diff --git a/v2/search/search_test.go b/v2/search/search_test.go
index e757ed69..e09a42d9 100644
--- a/v2/search/search_test.go
+++ b/v2/search/search_test.go
@@ -12,7 +12,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2"
 	"google.golang.org/appengine/v2/internal/aetesting"
diff --git a/v2/taskqueue/taskqueue.go b/v2/taskqueue/taskqueue.go
index 8bbd85aa..87c2b4d8 100644
--- a/v2/taskqueue/taskqueue.go
+++ b/v2/taskqueue/taskqueue.go
@@ -25,7 +25,7 @@ import (
 	"strconv"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2"
 	"google.golang.org/appengine/v2/internal"
diff --git a/v2/urlfetch/urlfetch.go b/v2/urlfetch/urlfetch.go
index a4a39ed4..1811cc20 100644
--- a/v2/urlfetch/urlfetch.go
+++ b/v2/urlfetch/urlfetch.go
@@ -18,7 +18,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 	pb "google.golang.org/appengine/v2/internal/urlfetch"
diff --git a/v2/user/user.go b/v2/user/user.go
index 5220b03a..c8770ac5 100644
--- a/v2/user/user.go
+++ b/v2/user/user.go
@@ -9,7 +9,7 @@ import (
 	"context"
 	"strings"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 	pb "google.golang.org/appengine/v2/internal/user"
diff --git a/v2/user/user_test.go b/v2/user/user_test.go
index dbef0cc1..7781191f 100644
--- a/v2/user/user_test.go
+++ b/v2/user/user_test.go
@@ -9,7 +9,7 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/appengine/v2/internal"
 	"google.golang.org/appengine/v2/internal/aetesting"
diff --git a/xmpp/xmpp.go b/xmpp/xmpp.go
index 6f46741b..1ebd6354 100644
--- a/xmpp/xmpp.go
+++ b/xmpp/xmpp.go
@@ -99,7 +99,7 @@ func Handle(f func(c context.Context, m *Message)) {
 func (m *Message) Send(c context.Context) error {
 	req := &pb.XmppMessageRequest{
 		Jid:    m.To,
-		Body:   &m.Body,
+		Body:   m.Body,
 		RawXml: &m.RawXML,
 	}
 	if m.Type != "" && m.Type != "chat" {
@@ -133,7 +133,7 @@ func (m *Message) Send(c context.Context) error {
 // the default (yourapp@appspot.com/bot) will be used.
 func Invite(c context.Context, to, from string) error {
 	req := &pb.XmppInviteRequest{
-		Jid: &to,
+		Jid: to,
 	}
 	if from != "" {
 		req.FromJid = &from
@@ -145,7 +145,7 @@ func Invite(c context.Context, to, from string) error {
 // Send sends a presence update.
 func (p *Presence) Send(c context.Context) error {
 	req := &pb.XmppSendPresenceRequest{
-		Jid: &p.To,
+		Jid: p.To,
 	}
 	if p.State != "" {
 		req.Show = &p.State
@@ -178,7 +178,7 @@ var presenceMap = map[pb.PresenceResponse_SHOW]string{
 // ErrPresenceUnavailable is returned if the presence is unavailable.
 func GetPresence(c context.Context, to string, from string) (string, error) {
 	req := &pb.PresenceRequest{
-		Jid: &to,
+		Jid: to,
 	}
 	if from != "" {
 		req.FromJid = &from
@@ -187,7 +187,7 @@ func GetPresence(c context.Context, to string, from string) (string, error) {
 	if err := internal.Call(c, "xmpp", "GetPresence", req, res); err != nil {
 		return "", err
 	}
-	if !*res.IsAvailable || res.Presence == nil {
+	if !res.IsAvailable || res.Presence == nil {
 		return "", ErrPresenceUnavailable
 	}
 	presence, ok := presenceMap[*res.Presence]
@@ -230,7 +230,7 @@ func GetPresenceMulti(c context.Context, to []string, from string) ([]string, er
 			addResult("", ErrInvalidJID)
 			continue
 		}
-		if !*subres.IsAvailable || subres.Presence == nil {
+		if !subres.IsAvailable || subres.Presence == nil {
 			anyErr = true
 			addResult("", ErrPresenceUnavailable)
 			continue

From 0827982f8ab2838eb8bed9b29441677245106c8e Mon Sep 17 00:00:00 2001
From: Anthony Carathimas <acarathimas@octolabs.io>
Date: Tue, 12 Mar 2024 16:32:04 -0400
Subject: [PATCH 3/5] fixed all tests;

---
 datastore/datastore.go      |  3 +++
 datastore/key_test.go       |  8 ++++----
 datastore/keycompat_test.go | 17 +++++++++--------
 datastore/save.go           |  2 +-
 4 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/datastore/datastore.go b/datastore/datastore.go
index bc87d3e3..402f1b1a 100644
--- a/datastore/datastore.go
+++ b/datastore/datastore.go
@@ -48,6 +48,9 @@ func (e *ErrFieldMismatch) Error() string {
 func protoToKey(r *pb.Reference) (k *Key, err error) {
 	appID := r.GetApp()
 	namespace := r.GetNameSpace()
+	if r.Path == nil {
+		return nil, fmt.Errorf("path is empty: %w", ErrInvalidKey)
+	}
 	for _, e := range r.Path.Element {
 		k = &Key{
 			kind:      e.GetType(),
diff --git a/datastore/key_test.go b/datastore/key_test.go
index 058b652c..17db1eba 100644
--- a/datastore/key_test.go
+++ b/datastore/key_test.go
@@ -27,16 +27,16 @@ func TestKeyEncoding(t *testing.T) {
 				intID: 1,
 				appID: "glibrary",
 			},
-			exp: "aghnbGlicmFyeXIMCxIGUGVyc29uGAEM",
+			exp: "aghnbGlicmFyeXIMCgoSBlBlcnNvbhgB",
 		},
 		{
-			desc: "A simple key with a string ID",
+			desc: "A simple key with a string ID2",
 			key: &Key{
 				kind:     "Graph",
 				stringID: "graph:7-day-active",
 				appID:    "glibrary",
 			},
-			exp: "aghnbGlicmFyeXIdCxIFR3JhcGgiEmdyYXBoOjctZGF5LWFjdGl2ZQw",
+			exp: "aghnbGlicmFyeXIdChsSBUdyYXBoIhJncmFwaDo3LWRheS1hY3RpdmU",
 		},
 		{
 			desc: "A key with a parent",
@@ -50,7 +50,7 @@ func TestKeyEncoding(t *testing.T) {
 				},
 				appID: "glibrary",
 			},
-			exp: "aghnbGlicmFyeXIhCxIJV29yZEluZGV4GIChPgwLEglXb3JkSW5kZXgYiQgM",
+			exp: "aghnbGlicmFyeXIhCg8SCVdvcmRJbmRleBiAoT4KDhIJV29yZEluZGV4GIkI",
 		},
 	}
 	for _, tc := range testCases {
diff --git a/datastore/keycompat_test.go b/datastore/keycompat_test.go
index 923fdac9..3f5d734e 100644
--- a/datastore/keycompat_test.go
+++ b/datastore/keycompat_test.go
@@ -15,6 +15,7 @@ func TestKeyConversion(t *testing.T) {
 		key        *Key
 		encodedKey string
 	}{
+
 		{
 			desc: "A control test for legacy to legacy key conversion int as the key",
 			key: &Key{
@@ -22,7 +23,7 @@ func TestKeyConversion(t *testing.T) {
 				intID: 1,
 				appID: "glibrary",
 			},
-			encodedKey: "aghnbGlicmFyeXIMCxIGUGVyc29uGAEM",
+			encodedKey: "aghnbGlicmFyeXIMCgoSBlBlcnNvbhgB",
 		},
 		{
 			desc: "A control test for legacy to legacy key conversion string as the key",
@@ -31,7 +32,7 @@ func TestKeyConversion(t *testing.T) {
 				stringID: "graph:7-day-active",
 				appID:    "glibrary",
 			},
-			encodedKey: "aghnbGlicmFyeXIdCxIFR3JhcGgiEmdyYXBoOjctZGF5LWFjdGl2ZQw",
+			encodedKey: "aghnbGlicmFyeXIdChsSBUdyYXBoIhJncmFwaDo3LWRheS1hY3RpdmU",
 		},
 
 		// These are keys encoded with cloud.google.com/go/datastore
@@ -43,9 +44,8 @@ func TestKeyConversion(t *testing.T) {
 				intID: 1033,
 				appID: "glibrary",
 			},
-			encodedKey: "Eg4KCVdvcmRJbmRleBCJCA",
+			encodedKey: "aghnbGlicmFyeXIQCg4SCVdvcmRJbmRleBiJCA",
 		},
-		// These are keys encoded with cloud.google.com/go/datastore
 		// Standard string
 		{
 			desc: "Convert new key format to old key with string id",
@@ -54,7 +54,7 @@ func TestKeyConversion(t *testing.T) {
 				stringID: "IAmAnID",
 				appID:    "glibrary",
 			},
-			encodedKey: "EhQKCVdvcmRJbmRleBoHSUFtQW5JRA",
+			encodedKey: "aghnbGlicmFyeXIWChQSCVdvcmRJbmRleCIHSUFtQW5JRA",
 		},
 
 		// These are keys encoded with cloud.google.com/go/datastore
@@ -71,19 +71,20 @@ func TestKeyConversion(t *testing.T) {
 					appID:    "glibrary",
 				},
 			},
-			encodedKey: "EhsKC0xldHRlckluZGV4GgxJQW1Bbm90aGVySUQSFAoJV29yZEluZGV4GgdJQW1BbklE",
+			encodedKey: "aghnbGlicmFyeXIzChsSC0xldHRlckluZGV4IgxJQW1Bbm90aGVySUQKFBIJV29yZEluZGV4IgdJQW1BbklE",
 		},
 	}
 
 	// Simulate the key converter enablement
 	keyConversion.appID = "glibrary"
 	for _, tc := range tests {
+		enc := tc.key.Encode()
 		dk, err := DecodeKey(tc.encodedKey)
 		if err != nil {
-			t.Fatalf("DecodeKey: %v", err)
+			t.Fatalf("DecodeKey: %v %s", err, enc)
 		}
 		if !reflect.DeepEqual(dk, tc.key) {
-			t.Errorf("%s: got %+v, want %+v", tc.desc, dk, tc.key)
+			t.Errorf("%s: got %+v, want %+v %s", tc.desc, dk, tc.key, enc)
 		}
 	}
 }
diff --git a/datastore/save.go b/datastore/save.go
index 6bd231a9..4f595a0d 100644
--- a/datastore/save.go
+++ b/datastore/save.go
@@ -48,7 +48,7 @@ func valueToProto(defaultAppID, name string, v reflect.Value, multiple bool) (p
 	case reflect.Bool:
 		pv.BooleanValue = proto.Bool(v.Bool())
 	case reflect.String:
-		pv.StringValue = v.Bytes()
+		pv.StringValue = []byte(v.String())
 	case reflect.Float32, reflect.Float64:
 		pv.DoubleValue = proto.Float64(v.Float())
 	case reflect.Ptr:

From 60848c6e7c52c42e23314abc3f0b709f432838ef Mon Sep 17 00:00:00 2001
From: Anthony Carathimas <acarathimas@octolabs.io>
Date: Wed, 13 Mar 2024 08:37:30 -0400
Subject: [PATCH 4/5] update go.mod version and ran go mod tidy

---
 go.mod |  2 +-
 go.sum | 23 -----------------------
 2 files changed, 1 insertion(+), 24 deletions(-)

diff --git a/go.mod b/go.mod
index cea93dc6..da0082e7 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
 module google.golang.org/appengine
 
-go 1.11
+go 1.21
 
 require (
 	golang.org/x/text v0.3.8
diff --git a/go.sum b/go.sum
index 52d5d01a..a692433c 100644
--- a/go.sum
+++ b/go.sum
@@ -1,31 +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=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY=
 golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 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=

From a9dbee310250214a9317c21c32b2b15d15976ffe Mon Sep 17 00:00:00 2001
From: Anthony Carathimas <acarathimas@octolabs.io>
Date: Wed, 13 Mar 2024 08:51:56 -0400
Subject: [PATCH 5/5] restored go version

---
 go.mod |  2 +-
 go.sum | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/go.mod b/go.mod
index da0082e7..cea93dc6 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
 module google.golang.org/appengine
 
-go 1.21
+go 1.11
 
 require (
 	golang.org/x/text v0.3.8
diff --git a/go.sum b/go.sum
index a692433c..52d5d01a 100644
--- a/go.sum
+++ b/go.sum
@@ -1,8 +1,31 @@
 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=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY=
 golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 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=