Repository: micromdm/micromdm
Pull request #839 (2022-07-15 07:53:50)

Feature/add lom commands
add possibility to send lom commands

https://github.com/micromdm/micromdm/issues/770

jessepeterson: Also - adding some tools scripts would be useful, too. :)
hrgbcxd: 

[add lom_reset to tools scripts](https://github.com/micromdm/micromdm/pull/839/commits/c762bd9ce7df47068d685e5d75a5503ce81e7182)

added shell script as example call.

[add end2end test for LOMDeviceRequest](https://github.com/micromdm/micromdm/pull/839/commits/452fa1678e2aa8d349447b7a230d85c688a90f78)

added e2e test case for LOMDeviceRequest

I can run an actual test tomorrow if all this still works, because in [add missing underscore changes](https://github.com/micromdm/micromdm/pull/839/commits/6156c3eaae336d59f840d9772d5cb741f84eff4f) I changed a generated file which now got changed back to camel case.

Patch:
diff --git a/go.mod b/go.mod
index 299770c..20d5c05 100644
--- a/go.mod
+++ b/go.mod
@@ -22,7 +22,7 @@ require (
 	go.mozilla.org/pkcs7 v0.0.0-20210826202110-33d05740a352
 	golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa
 	golang.org/x/net v0.0.0-20210226172049-e18ecbb05110
-	google.golang.org/protobuf v1.27.1
+	google.golang.org/protobuf v1.28.0
 	gopkg.in/Masterminds/squirrel.v1 v1.0.0-20170825200431-a6b93000bd21
 )
 
diff --git a/go.sum b/go.sum
index 85337a7..4a8e729 100644
--- a/go.sum
+++ b/go.sum
@@ -104,7 +104,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T
 google.golang.org/appengine v1.2.0 h1:S0iUepdCWODXRvtE+gcRDd15L+k+k1AiHlMiMjefH24=
 google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
-google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/Masterminds/squirrel.v1 v1.0.0-20170825200431-a6b93000bd21 h1:GmGVIcDxdecAcVjcTp4IpK4VmCMxXhyZKwN2eIzsZ4Y=
 gopkg.in/Masterminds/squirrel.v1 v1.0.0-20170825200431-a6b93000bd21/go.mod h1:8PH4rQjb7OdPC6OWDDuY6J/PT8iSNTiff3jmccc2m10=
diff --git a/mdm/internal/checkinproto/checkin.pb.go b/mdm/internal/checkinproto/checkin.pb.go
index 68102cd..c59ebd6 100644
--- a/mdm/internal/checkinproto/checkin.pb.go
+++ b/mdm/internal/checkinproto/checkin.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: checkin.proto
 
 package checkinproto
diff --git a/mdm/internal/connectproto/connect.pb.go b/mdm/internal/connectproto/connect.pb.go
index c91f413..dc15ef1 100644
--- a/mdm/internal/connectproto/connect.pb.go
+++ b/mdm/internal/connectproto/connect.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: connect.proto
 
 package connectproto
diff --git a/mdm/mdm/command.go b/mdm/mdm/command.go
index 7154a2c..2d03a49 100644
--- a/mdm/mdm/command.go
+++ b/mdm/mdm/command.go
@@ -69,6 +69,8 @@ type Command struct {
 	ActiveNSExtensions              *ActiveNSExtensions
 	RotateFileVaultKey              *RotateFileVaultKey
 	RefreshCellularPlans            *RefreshCellularPlans
+	LOMDeviceRequest                *LOMDeviceRequest
+	LOMSetupRequestCommand          *LOMSetupRequestCommand
 }
 
 // InstallProfile is an InstallProfile MDM Command
@@ -236,6 +238,23 @@ type Setting struct {
 	ConfigurationData       []byte                 `plist:"-" json:"configuration"` // used to build the dictionary
 }
 
+type LOMDeviceRequest struct {
+	RequestList []LOMDeviceRequestCommand `plist:",omitempty" json:"request_list,omitempty"`
+}
+
+type LOMDeviceRequestCommand struct {
+	DeviceDNSName            string   `json:"device_dns_name"`
+	DeviceRequestType        string   `json:"device_request_type"`
+	DeviceRequestUUID        string   `json:"device_request_uuid"`
+	LOMProtocolVersion       int      `json:"lom_protocol_version"`
+	PrimaryIPv6AddressList   []string `json:"primary_ip_v6_address_list"`
+	SecondaryIPv6AddressList []string `json:"secondary_ip_v6_address_list"`
+}
+
+type LOMSetupRequestCommand struct {
+	RequestRequiresNetworkTether *bool `plist:",omitempty" json:"request_requires_network_tether,omitempty"`
+}
+
 type ManagedApplicationConfiguration struct {
 	Identifiers []string `plist:",omitempty" json:"identifiers,omitempty"`
 }
diff --git a/mdm/mdm/internal/mdmproto/mdm.pb.go b/mdm/mdm/internal/mdmproto/mdm.pb.go
index 147aada..fbf769c 100644
--- a/mdm/mdm/internal/mdmproto/mdm.pb.go
+++ b/mdm/mdm/internal/mdmproto/mdm.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.27.1
-// 	protoc        v3.19.4
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: mdm.proto
 
 package mdmproto
@@ -72,7 +72,7 @@ func (x ResultPayload_Status) Number() protoreflect.EnumNumber {
 
 // Deprecated: Use ResultPayload_Status.Descriptor instead.
 func (ResultPayload_Status) EnumDescriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{69, 0}
+	return file_mdm_proto_rawDescGZIP(), []int{71, 0}
 }
 
 type CommandPayload struct {
@@ -143,6 +143,7 @@ type Command struct {
 	//- CertificateList",
 	//- SecurityInfo
 	//- RestartDevice
+	//- LOMSetupRequest
 	//- ShutDownDevice
 	//- StopMirroring
 	//- ClearRestrictionsPassword
@@ -199,6 +200,7 @@ type Command struct {
 	//	*Command_SetRecoveryLock
 	//	*Command_VerifyRecoveryLock
 	//	*Command_RefreshCellularPlans
+	//	*Command_LomDeviceRequestCommand
 	Request isCommand_Request `protobuf_oneof:"request"`
 }
 
@@ -521,6 +523,13 @@ func (x *Command) GetRefreshCellularPlans() *RefreshCellularPlans {
 	return nil
 }
 
+func (x *Command) GetLomDeviceRequestCommand() *LOMDeviceRequest {
+	if x, ok := x.GetRequest().(*Command_LomDeviceRequestCommand); ok {
+		return x.LomDeviceRequestCommand
+	}
+	return nil
+}
+
 type isCommand_Request interface {
 	isCommand_Request()
 }
@@ -681,6 +690,10 @@ type Command_RefreshCellularPlans struct {
 	RefreshCellularPlans *RefreshCellularPlans `protobuf:"bytes,40,opt,name=refresh_cellular_plans,json=refreshCellularPlans,proto3,oneof"`
 }
 
+type Command_LomDeviceRequestCommand struct {
+	LomDeviceRequestCommand *LOMDeviceRequest `protobuf:"bytes,41,opt,name=lomDeviceRequestCommand,proto3,oneof"`
+}
+
 func (*Command_InstallProfile) isCommand_Request() {}
 
 func (*Command_RemoveProfile) isCommand_Request() {}
@@ -759,6 +772,8 @@ func (*Command_VerifyRecoveryLock) isCommand_Request() {}
 
 func (*Command_RefreshCellularPlans) isCommand_Request() {}
 
+func (*Command_LomDeviceRequestCommand) isCommand_Request() {}
+
 type InstallProfile struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2684,6 +2699,140 @@ func (x *RemoveMedia) GetPersistentId() string {
 	return ""
 }
 
+type LOMDeviceRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	RequestList []*LOMDeviceRequestCommand `protobuf:"bytes,1,rep,name=requestList,proto3" json:"requestList,omitempty"`
+}
+
+func (x *LOMDeviceRequest) Reset() {
+	*x = LOMDeviceRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_mdm_proto_msgTypes[35]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LOMDeviceRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LOMDeviceRequest) ProtoMessage() {}
+
+func (x *LOMDeviceRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_mdm_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 LOMDeviceRequest.ProtoReflect.Descriptor instead.
+func (*LOMDeviceRequest) Descriptor() ([]byte, []int) {
+	return file_mdm_proto_rawDescGZIP(), []int{35}
+}
+
+func (x *LOMDeviceRequest) GetRequestList() []*LOMDeviceRequestCommand {
+	if x != nil {
+		return x.RequestList
+	}
+	return nil
+}
+
+type LOMDeviceRequestCommand struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	DeviceDNSName            string   `protobuf:"bytes,1,opt,name=deviceDNSName,proto3" json:"deviceDNSName,omitempty"`
+	DeviceRequestType        string   `protobuf:"bytes,2,opt,name=deviceRequestType,proto3" json:"deviceRequestType,omitempty"`
+	DeviceRequestUUID        string   `protobuf:"bytes,3,opt,name=deviceRequestUUID,proto3" json:"deviceRequestUUID,omitempty"`
+	LomProtocolVersion       int64    `protobuf:"varint,4,opt,name=lomProtocolVersion,proto3" json:"lomProtocolVersion,omitempty"`
+	PrimaryIPv6AddressList   []string `protobuf:"bytes,5,rep,name=primaryIPv6AddressList,proto3" json:"primaryIPv6AddressList,omitempty"`
+	SecondaryIPv6AddressList []string `protobuf:"bytes,6,rep,name=secondaryIPv6AddressList,proto3" json:"secondaryIPv6AddressList,omitempty"`
+}
+
+func (x *LOMDeviceRequestCommand) Reset() {
+	*x = LOMDeviceRequestCommand{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_mdm_proto_msgTypes[36]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LOMDeviceRequestCommand) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LOMDeviceRequestCommand) ProtoMessage() {}
+
+func (x *LOMDeviceRequestCommand) ProtoReflect() protoreflect.Message {
+	mi := &file_mdm_proto_msgTypes[36]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LOMDeviceRequestCommand.ProtoReflect.Descriptor instead.
+func (*LOMDeviceRequestCommand) Descriptor() ([]byte, []int) {
+	return file_mdm_proto_rawDescGZIP(), []int{36}
+}
+
+func (x *LOMDeviceRequestCommand) GetDeviceDNSName() string {
+	if x != nil {
+		return x.DeviceDNSName
+	}
+	return ""
+}
+
+func (x *LOMDeviceRequestCommand) GetDeviceRequestType() string {
+	if x != nil {
+		return x.DeviceRequestType
+	}
+	return ""
+}
+
+func (x *LOMDeviceRequestCommand) GetDeviceRequestUUID() string {
+	if x != nil {
+		return x.DeviceRequestUUID
+	}
+	return ""
+}
+
+func (x *LOMDeviceRequestCommand) GetLomProtocolVersion() int64 {
+	if x != nil {
+		return x.LomProtocolVersion
+	}
+	return 0
+}
+
+func (x *LOMDeviceRequestCommand) GetPrimaryIPv6AddressList() []string {
+	if x != nil {
+		return x.PrimaryIPv6AddressList
+	}
+	return nil
+}
+
+func (x *LOMDeviceRequestCommand) GetSecondaryIPv6AddressList() []string {
+	if x != nil {
+		return x.SecondaryIPv6AddressList
+	}
+	return nil
+}
+
 type Settings struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2695,7 +2844,7 @@ type Settings struct {
 func (x *Settings) Reset() {
 	*x = Settings{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[35]
+		mi := &file_mdm_proto_msgTypes[37]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2708,7 +2857,7 @@ func (x *Settings) String() string {
 func (*Settings) ProtoMessage() {}
 
 func (x *Settings) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[35]
+	mi := &file_mdm_proto_msgTypes[37]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2721,7 +2870,7 @@ func (x *Settings) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use Settings.ProtoReflect.Descriptor instead.
 func (*Settings) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{35}
+	return file_mdm_proto_rawDescGZIP(), []int{37}
 }
 
 func (x *Settings) GetSettings() []*Setting {
@@ -2757,7 +2906,7 @@ type Setting struct {
 func (x *Setting) Reset() {
 	*x = Setting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[36]
+		mi := &file_mdm_proto_msgTypes[38]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2770,7 +2919,7 @@ func (x *Setting) String() string {
 func (*Setting) ProtoMessage() {}
 
 func (x *Setting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[36]
+	mi := &file_mdm_proto_msgTypes[38]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2783,7 +2932,7 @@ func (x *Setting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use Setting.ProtoReflect.Descriptor instead.
 func (*Setting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{36}
+	return file_mdm_proto_rawDescGZIP(), []int{38}
 }
 
 func (x *Setting) GetItem() string {
@@ -2909,7 +3058,7 @@ type VoiceRoamingSetting struct {
 func (x *VoiceRoamingSetting) Reset() {
 	*x = VoiceRoamingSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[37]
+		mi := &file_mdm_proto_msgTypes[39]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2922,7 +3071,7 @@ func (x *VoiceRoamingSetting) String() string {
 func (*VoiceRoamingSetting) ProtoMessage() {}
 
 func (x *VoiceRoamingSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[37]
+	mi := &file_mdm_proto_msgTypes[39]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2935,7 +3084,7 @@ func (x *VoiceRoamingSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use VoiceRoamingSetting.ProtoReflect.Descriptor instead.
 func (*VoiceRoamingSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{37}
+	return file_mdm_proto_rawDescGZIP(), []int{39}
 }
 
 func (x *VoiceRoamingSetting) GetEnabled() bool {
@@ -2956,7 +3105,7 @@ type PersonalHotspotSetting struct {
 func (x *PersonalHotspotSetting) Reset() {
 	*x = PersonalHotspotSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[38]
+		mi := &file_mdm_proto_msgTypes[40]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2969,7 +3118,7 @@ func (x *PersonalHotspotSetting) String() string {
 func (*PersonalHotspotSetting) ProtoMessage() {}
 
 func (x *PersonalHotspotSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[38]
+	mi := &file_mdm_proto_msgTypes[40]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2982,7 +3131,7 @@ func (x *PersonalHotspotSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PersonalHotspotSetting.ProtoReflect.Descriptor instead.
 func (*PersonalHotspotSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{38}
+	return file_mdm_proto_rawDescGZIP(), []int{40}
 }
 
 func (x *PersonalHotspotSetting) GetEnabled() bool {
@@ -3004,7 +3153,7 @@ type WallpaperSetting struct {
 func (x *WallpaperSetting) Reset() {
 	*x = WallpaperSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[39]
+		mi := &file_mdm_proto_msgTypes[41]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3017,7 +3166,7 @@ func (x *WallpaperSetting) String() string {
 func (*WallpaperSetting) ProtoMessage() {}
 
 func (x *WallpaperSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[39]
+	mi := &file_mdm_proto_msgTypes[41]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3030,7 +3179,7 @@ func (x *WallpaperSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use WallpaperSetting.ProtoReflect.Descriptor instead.
 func (*WallpaperSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{39}
+	return file_mdm_proto_rawDescGZIP(), []int{41}
 }
 
 func (x *WallpaperSetting) GetImage() []byte {
@@ -3058,7 +3207,7 @@ type DataRoamingSetting struct {
 func (x *DataRoamingSetting) Reset() {
 	*x = DataRoamingSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[40]
+		mi := &file_mdm_proto_msgTypes[42]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3071,7 +3220,7 @@ func (x *DataRoamingSetting) String() string {
 func (*DataRoamingSetting) ProtoMessage() {}
 
 func (x *DataRoamingSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[40]
+	mi := &file_mdm_proto_msgTypes[42]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3084,7 +3233,7 @@ func (x *DataRoamingSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DataRoamingSetting.ProtoReflect.Descriptor instead.
 func (*DataRoamingSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{40}
+	return file_mdm_proto_rawDescGZIP(), []int{42}
 }
 
 func (x *DataRoamingSetting) GetEnabled() bool {
@@ -3105,7 +3254,7 @@ type BluetoothSetting struct {
 func (x *BluetoothSetting) Reset() {
 	*x = BluetoothSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[41]
+		mi := &file_mdm_proto_msgTypes[43]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3118,7 +3267,7 @@ func (x *BluetoothSetting) String() string {
 func (*BluetoothSetting) ProtoMessage() {}
 
 func (x *BluetoothSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[41]
+	mi := &file_mdm_proto_msgTypes[43]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3131,7 +3280,7 @@ func (x *BluetoothSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use BluetoothSetting.ProtoReflect.Descriptor instead.
 func (*BluetoothSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{41}
+	return file_mdm_proto_rawDescGZIP(), []int{43}
 }
 
 func (x *BluetoothSetting) GetEnabled() bool {
@@ -3153,7 +3302,7 @@ type ApplicationAttributesSetting struct {
 func (x *ApplicationAttributesSetting) Reset() {
 	*x = ApplicationAttributesSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[42]
+		mi := &file_mdm_proto_msgTypes[44]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3166,7 +3315,7 @@ func (x *ApplicationAttributesSetting) String() string {
 func (*ApplicationAttributesSetting) ProtoMessage() {}
 
 func (x *ApplicationAttributesSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[42]
+	mi := &file_mdm_proto_msgTypes[44]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3179,7 +3328,7 @@ func (x *ApplicationAttributesSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ApplicationAttributesSetting.ProtoReflect.Descriptor instead.
 func (*ApplicationAttributesSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{42}
+	return file_mdm_proto_rawDescGZIP(), []int{44}
 }
 
 func (x *ApplicationAttributesSetting) GetIdentifier() string {
@@ -3208,7 +3357,7 @@ type ApplicationConfigurationSetting struct {
 func (x *ApplicationConfigurationSetting) Reset() {
 	*x = ApplicationConfigurationSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[43]
+		mi := &file_mdm_proto_msgTypes[45]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3221,7 +3370,7 @@ func (x *ApplicationConfigurationSetting) String() string {
 func (*ApplicationConfigurationSetting) ProtoMessage() {}
 
 func (x *ApplicationConfigurationSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[43]
+	mi := &file_mdm_proto_msgTypes[45]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3234,7 +3383,7 @@ func (x *ApplicationConfigurationSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ApplicationConfigurationSetting.ProtoReflect.Descriptor instead.
 func (*ApplicationConfigurationSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{43}
+	return file_mdm_proto_rawDescGZIP(), []int{45}
 }
 
 func (x *ApplicationConfigurationSetting) GetIdentifier() string {
@@ -3262,7 +3411,7 @@ type ApplicationAttributes struct {
 func (x *ApplicationAttributes) Reset() {
 	*x = ApplicationAttributes{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[44]
+		mi := &file_mdm_proto_msgTypes[46]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3275,7 +3424,7 @@ func (x *ApplicationAttributes) String() string {
 func (*ApplicationAttributes) ProtoMessage() {}
 
 func (x *ApplicationAttributes) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[44]
+	mi := &file_mdm_proto_msgTypes[46]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3288,7 +3437,7 @@ func (x *ApplicationAttributes) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ApplicationAttributes.ProtoReflect.Descriptor instead.
 func (*ApplicationAttributes) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{44}
+	return file_mdm_proto_rawDescGZIP(), []int{46}
 }
 
 func (x *ApplicationAttributes) GetVpnUuid() string {
@@ -3309,7 +3458,7 @@ type DeviceNameSetting struct {
 func (x *DeviceNameSetting) Reset() {
 	*x = DeviceNameSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[45]
+		mi := &file_mdm_proto_msgTypes[47]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3322,7 +3471,7 @@ func (x *DeviceNameSetting) String() string {
 func (*DeviceNameSetting) ProtoMessage() {}
 
 func (x *DeviceNameSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[45]
+	mi := &file_mdm_proto_msgTypes[47]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3335,7 +3484,7 @@ func (x *DeviceNameSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeviceNameSetting.ProtoReflect.Descriptor instead.
 func (*DeviceNameSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{45}
+	return file_mdm_proto_rawDescGZIP(), []int{47}
 }
 
 func (x *DeviceNameSetting) GetDeviceName() string {
@@ -3356,7 +3505,7 @@ type TimeZoneSetting struct {
 func (x *TimeZoneSetting) Reset() {
 	*x = TimeZoneSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[46]
+		mi := &file_mdm_proto_msgTypes[48]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3369,7 +3518,7 @@ func (x *TimeZoneSetting) String() string {
 func (*TimeZoneSetting) ProtoMessage() {}
 
 func (x *TimeZoneSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[46]
+	mi := &file_mdm_proto_msgTypes[48]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3382,7 +3531,7 @@ func (x *TimeZoneSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use TimeZoneSetting.ProtoReflect.Descriptor instead.
 func (*TimeZoneSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{46}
+	return file_mdm_proto_rawDescGZIP(), []int{48}
 }
 
 func (x *TimeZoneSetting) GetTimeZone() string {
@@ -3403,7 +3552,7 @@ type HostnameSetting struct {
 func (x *HostnameSetting) Reset() {
 	*x = HostnameSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[47]
+		mi := &file_mdm_proto_msgTypes[49]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3416,7 +3565,7 @@ func (x *HostnameSetting) String() string {
 func (*HostnameSetting) ProtoMessage() {}
 
 func (x *HostnameSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[47]
+	mi := &file_mdm_proto_msgTypes[49]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3429,7 +3578,7 @@ func (x *HostnameSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use HostnameSetting.ProtoReflect.Descriptor instead.
 func (*HostnameSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{47}
+	return file_mdm_proto_rawDescGZIP(), []int{49}
 }
 
 func (x *HostnameSetting) GetHostname() string {
@@ -3450,7 +3599,7 @@ type MDMOptionsSetting struct {
 func (x *MDMOptionsSetting) Reset() {
 	*x = MDMOptionsSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[48]
+		mi := &file_mdm_proto_msgTypes[50]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3463,7 +3612,7 @@ func (x *MDMOptionsSetting) String() string {
 func (*MDMOptionsSetting) ProtoMessage() {}
 
 func (x *MDMOptionsSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[48]
+	mi := &file_mdm_proto_msgTypes[50]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3476,7 +3625,7 @@ func (x *MDMOptionsSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use MDMOptionsSetting.ProtoReflect.Descriptor instead.
 func (*MDMOptionsSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{48}
+	return file_mdm_proto_rawDescGZIP(), []int{50}
 }
 
 func (x *MDMOptionsSetting) GetMdmOptions() *MDMOptions {
@@ -3499,7 +3648,7 @@ type MDMOptions struct {
 func (x *MDMOptions) Reset() {
 	*x = MDMOptions{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[49]
+		mi := &file_mdm_proto_msgTypes[51]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3512,7 +3661,7 @@ func (x *MDMOptions) String() string {
 func (*MDMOptions) ProtoMessage() {}
 
 func (x *MDMOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[49]
+	mi := &file_mdm_proto_msgTypes[51]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3525,7 +3674,7 @@ func (x *MDMOptions) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use MDMOptions.ProtoReflect.Descriptor instead.
 func (*MDMOptions) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{49}
+	return file_mdm_proto_rawDescGZIP(), []int{51}
 }
 
 func (x *MDMOptions) GetActivationLockAllowedWhileSupervised() bool {
@@ -3560,7 +3709,7 @@ type PasscodeLockGracePeriodSetting struct {
 func (x *PasscodeLockGracePeriodSetting) Reset() {
 	*x = PasscodeLockGracePeriodSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[50]
+		mi := &file_mdm_proto_msgTypes[52]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3573,7 +3722,7 @@ func (x *PasscodeLockGracePeriodSetting) String() string {
 func (*PasscodeLockGracePeriodSetting) ProtoMessage() {}
 
 func (x *PasscodeLockGracePeriodSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[50]
+	mi := &file_mdm_proto_msgTypes[52]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3586,7 +3735,7 @@ func (x *PasscodeLockGracePeriodSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PasscodeLockGracePeriodSetting.ProtoReflect.Descriptor instead.
 func (*PasscodeLockGracePeriodSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{50}
+	return file_mdm_proto_rawDescGZIP(), []int{52}
 }
 
 func (x *PasscodeLockGracePeriodSetting) GetPasscodeLockGracePeriod() int64 {
@@ -3607,7 +3756,7 @@ type MaximumResidentUsersSetting struct {
 func (x *MaximumResidentUsersSetting) Reset() {
 	*x = MaximumResidentUsersSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[51]
+		mi := &file_mdm_proto_msgTypes[53]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3620,7 +3769,7 @@ func (x *MaximumResidentUsersSetting) String() string {
 func (*MaximumResidentUsersSetting) ProtoMessage() {}
 
 func (x *MaximumResidentUsersSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[51]
+	mi := &file_mdm_proto_msgTypes[53]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3633,7 +3782,7 @@ func (x *MaximumResidentUsersSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use MaximumResidentUsersSetting.ProtoReflect.Descriptor instead.
 func (*MaximumResidentUsersSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{51}
+	return file_mdm_proto_rawDescGZIP(), []int{53}
 }
 
 func (x *MaximumResidentUsersSetting) GetMaximumResidentUsers() int64 {
@@ -3654,7 +3803,7 @@ type DiagnosticSubmissionSetting struct {
 func (x *DiagnosticSubmissionSetting) Reset() {
 	*x = DiagnosticSubmissionSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[52]
+		mi := &file_mdm_proto_msgTypes[54]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3667,7 +3816,7 @@ func (x *DiagnosticSubmissionSetting) String() string {
 func (*DiagnosticSubmissionSetting) ProtoMessage() {}
 
 func (x *DiagnosticSubmissionSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[52]
+	mi := &file_mdm_proto_msgTypes[54]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3680,7 +3829,7 @@ func (x *DiagnosticSubmissionSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DiagnosticSubmissionSetting.ProtoReflect.Descriptor instead.
 func (*DiagnosticSubmissionSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{52}
+	return file_mdm_proto_rawDescGZIP(), []int{54}
 }
 
 func (x *DiagnosticSubmissionSetting) GetEnabled() bool {
@@ -3701,7 +3850,7 @@ type AppAnalyticsSetting struct {
 func (x *AppAnalyticsSetting) Reset() {
 	*x = AppAnalyticsSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[53]
+		mi := &file_mdm_proto_msgTypes[55]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3714,7 +3863,7 @@ func (x *AppAnalyticsSetting) String() string {
 func (*AppAnalyticsSetting) ProtoMessage() {}
 
 func (x *AppAnalyticsSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[53]
+	mi := &file_mdm_proto_msgTypes[55]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3727,7 +3876,7 @@ func (x *AppAnalyticsSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AppAnalyticsSetting.ProtoReflect.Descriptor instead.
 func (*AppAnalyticsSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{53}
+	return file_mdm_proto_rawDescGZIP(), []int{55}
 }
 
 func (x *AppAnalyticsSetting) GetEnabled() bool {
@@ -3748,7 +3897,7 @@ type ManagedApplicationConfiguration struct {
 func (x *ManagedApplicationConfiguration) Reset() {
 	*x = ManagedApplicationConfiguration{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[54]
+		mi := &file_mdm_proto_msgTypes[56]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3761,7 +3910,7 @@ func (x *ManagedApplicationConfiguration) String() string {
 func (*ManagedApplicationConfiguration) ProtoMessage() {}
 
 func (x *ManagedApplicationConfiguration) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[54]
+	mi := &file_mdm_proto_msgTypes[56]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3774,7 +3923,7 @@ func (x *ManagedApplicationConfiguration) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ManagedApplicationConfiguration.ProtoReflect.Descriptor instead.
 func (*ManagedApplicationConfiguration) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{54}
+	return file_mdm_proto_rawDescGZIP(), []int{56}
 }
 
 func (x *ManagedApplicationConfiguration) GetIdentifiers() []string {
@@ -3795,7 +3944,7 @@ type ManagedApplicationAttributes struct {
 func (x *ManagedApplicationAttributes) Reset() {
 	*x = ManagedApplicationAttributes{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[55]
+		mi := &file_mdm_proto_msgTypes[57]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3808,7 +3957,7 @@ func (x *ManagedApplicationAttributes) String() string {
 func (*ManagedApplicationAttributes) ProtoMessage() {}
 
 func (x *ManagedApplicationAttributes) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[55]
+	mi := &file_mdm_proto_msgTypes[57]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3821,7 +3970,7 @@ func (x *ManagedApplicationAttributes) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ManagedApplicationAttributes.ProtoReflect.Descriptor instead.
 func (*ManagedApplicationAttributes) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{55}
+	return file_mdm_proto_rawDescGZIP(), []int{57}
 }
 
 func (x *ManagedApplicationAttributes) GetIdentifiers() []string {
@@ -3843,7 +3992,7 @@ type ManagedApplicationFeedback struct {
 func (x *ManagedApplicationFeedback) Reset() {
 	*x = ManagedApplicationFeedback{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[56]
+		mi := &file_mdm_proto_msgTypes[58]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3856,7 +4005,7 @@ func (x *ManagedApplicationFeedback) String() string {
 func (*ManagedApplicationFeedback) ProtoMessage() {}
 
 func (x *ManagedApplicationFeedback) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[56]
+	mi := &file_mdm_proto_msgTypes[58]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3869,7 +4018,7 @@ func (x *ManagedApplicationFeedback) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ManagedApplicationFeedback.ProtoReflect.Descriptor instead.
 func (*ManagedApplicationFeedback) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{56}
+	return file_mdm_proto_rawDescGZIP(), []int{58}
 }
 
 func (x *ManagedApplicationFeedback) GetIdentifiers() []string {
@@ -3900,7 +4049,7 @@ type SetFirmwarePassword struct {
 func (x *SetFirmwarePassword) Reset() {
 	*x = SetFirmwarePassword{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[57]
+		mi := &file_mdm_proto_msgTypes[59]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3913,7 +4062,7 @@ func (x *SetFirmwarePassword) String() string {
 func (*SetFirmwarePassword) ProtoMessage() {}
 
 func (x *SetFirmwarePassword) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[57]
+	mi := &file_mdm_proto_msgTypes[59]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3926,7 +4075,7 @@ func (x *SetFirmwarePassword) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use SetFirmwarePassword.ProtoReflect.Descriptor instead.
 func (*SetFirmwarePassword) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{57}
+	return file_mdm_proto_rawDescGZIP(), []int{59}
 }
 
 func (x *SetFirmwarePassword) GetCurrentPassword() string {
@@ -3968,7 +4117,7 @@ type VerifyFirmwarePassword struct {
 func (x *VerifyFirmwarePassword) Reset() {
 	*x = VerifyFirmwarePassword{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[58]
+		mi := &file_mdm_proto_msgTypes[60]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3981,7 +4130,7 @@ func (x *VerifyFirmwarePassword) String() string {
 func (*VerifyFirmwarePassword) ProtoMessage() {}
 
 func (x *VerifyFirmwarePassword) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[58]
+	mi := &file_mdm_proto_msgTypes[60]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3994,7 +4143,7 @@ func (x *VerifyFirmwarePassword) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use VerifyFirmwarePassword.ProtoReflect.Descriptor instead.
 func (*VerifyFirmwarePassword) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{58}
+	return file_mdm_proto_rawDescGZIP(), []int{60}
 }
 
 func (x *VerifyFirmwarePassword) GetPassword() string {
@@ -4018,7 +4167,7 @@ type SetRecoveryLock struct {
 func (x *SetRecoveryLock) Reset() {
 	*x = SetRecoveryLock{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[59]
+		mi := &file_mdm_proto_msgTypes[61]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4031,7 +4180,7 @@ func (x *SetRecoveryLock) String() string {
 func (*SetRecoveryLock) ProtoMessage() {}
 
 func (x *SetRecoveryLock) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[59]
+	mi := &file_mdm_proto_msgTypes[61]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4044,7 +4193,7 @@ func (x *SetRecoveryLock) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use SetRecoveryLock.ProtoReflect.Descriptor instead.
 func (*SetRecoveryLock) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{59}
+	return file_mdm_proto_rawDescGZIP(), []int{61}
 }
 
 func (x *SetRecoveryLock) GetCurrentPassword() string {
@@ -4086,7 +4235,7 @@ type VerifyRecoveryLock struct {
 func (x *VerifyRecoveryLock) Reset() {
 	*x = VerifyRecoveryLock{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[60]
+		mi := &file_mdm_proto_msgTypes[62]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4099,7 +4248,7 @@ func (x *VerifyRecoveryLock) String() string {
 func (*VerifyRecoveryLock) ProtoMessage() {}
 
 func (x *VerifyRecoveryLock) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[60]
+	mi := &file_mdm_proto_msgTypes[62]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4112,7 +4261,7 @@ func (x *VerifyRecoveryLock) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use VerifyRecoveryLock.ProtoReflect.Descriptor instead.
 func (*VerifyRecoveryLock) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{60}
+	return file_mdm_proto_rawDescGZIP(), []int{62}
 }
 
 func (x *VerifyRecoveryLock) GetPassword() string {
@@ -4134,7 +4283,7 @@ type SetAutoAdminPassword struct {
 func (x *SetAutoAdminPassword) Reset() {
 	*x = SetAutoAdminPassword{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[61]
+		mi := &file_mdm_proto_msgTypes[63]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4147,7 +4296,7 @@ func (x *SetAutoAdminPassword) String() string {
 func (*SetAutoAdminPassword) ProtoMessage() {}
 
 func (x *SetAutoAdminPassword) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[61]
+	mi := &file_mdm_proto_msgTypes[63]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4160,7 +4309,7 @@ func (x *SetAutoAdminPassword) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use SetAutoAdminPassword.ProtoReflect.Descriptor instead.
 func (*SetAutoAdminPassword) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{61}
+	return file_mdm_proto_rawDescGZIP(), []int{63}
 }
 
 func (x *SetAutoAdminPassword) GetGuid() string {
@@ -4188,7 +4337,7 @@ type ScheduleOSUpdate struct {
 func (x *ScheduleOSUpdate) Reset() {
 	*x = ScheduleOSUpdate{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[62]
+		mi := &file_mdm_proto_msgTypes[64]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4201,7 +4350,7 @@ func (x *ScheduleOSUpdate) String() string {
 func (*ScheduleOSUpdate) ProtoMessage() {}
 
 func (x *ScheduleOSUpdate) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[62]
+	mi := &file_mdm_proto_msgTypes[64]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4214,7 +4363,7 @@ func (x *ScheduleOSUpdate) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ScheduleOSUpdate.ProtoReflect.Descriptor instead.
 func (*ScheduleOSUpdate) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{62}
+	return file_mdm_proto_rawDescGZIP(), []int{64}
 }
 
 func (x *ScheduleOSUpdate) GetUpdates() []*Update {
@@ -4239,7 +4388,7 @@ type Update struct {
 func (x *Update) Reset() {
 	*x = Update{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[63]
+		mi := &file_mdm_proto_msgTypes[65]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4252,7 +4401,7 @@ func (x *Update) String() string {
 func (*Update) ProtoMessage() {}
 
 func (x *Update) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[63]
+	mi := &file_mdm_proto_msgTypes[65]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4265,7 +4414,7 @@ func (x *Update) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use Update.ProtoReflect.Descriptor instead.
 func (*Update) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{63}
+	return file_mdm_proto_rawDescGZIP(), []int{65}
 }
 
 func (x *Update) GetProductKey() string {
@@ -4314,7 +4463,7 @@ type ScheduleOSUpdateScan struct {
 func (x *ScheduleOSUpdateScan) Reset() {
 	*x = ScheduleOSUpdateScan{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[64]
+		mi := &file_mdm_proto_msgTypes[66]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4327,7 +4476,7 @@ func (x *ScheduleOSUpdateScan) String() string {
 func (*ScheduleOSUpdateScan) ProtoMessage() {}
 
 func (x *ScheduleOSUpdateScan) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[64]
+	mi := &file_mdm_proto_msgTypes[66]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4340,7 +4489,7 @@ func (x *ScheduleOSUpdateScan) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ScheduleOSUpdateScan.ProtoReflect.Descriptor instead.
 func (*ScheduleOSUpdateScan) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{64}
+	return file_mdm_proto_rawDescGZIP(), []int{66}
 }
 
 func (x *ScheduleOSUpdateScan) GetForce() bool {
@@ -4361,7 +4510,7 @@ type ActiveNSExtensions struct {
 func (x *ActiveNSExtensions) Reset() {
 	*x = ActiveNSExtensions{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[65]
+		mi := &file_mdm_proto_msgTypes[67]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4374,7 +4523,7 @@ func (x *ActiveNSExtensions) String() string {
 func (*ActiveNSExtensions) ProtoMessage() {}
 
 func (x *ActiveNSExtensions) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[65]
+	mi := &file_mdm_proto_msgTypes[67]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4387,7 +4536,7 @@ func (x *ActiveNSExtensions) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ActiveNSExtensions.ProtoReflect.Descriptor instead.
 func (*ActiveNSExtensions) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{65}
+	return file_mdm_proto_rawDescGZIP(), []int{67}
 }
 
 func (x *ActiveNSExtensions) GetFilterExtensionPoints() []string {
@@ -4411,7 +4560,7 @@ type RotateFileVaultKey struct {
 func (x *RotateFileVaultKey) Reset() {
 	*x = RotateFileVaultKey{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[66]
+		mi := &file_mdm_proto_msgTypes[68]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4424,7 +4573,7 @@ func (x *RotateFileVaultKey) String() string {
 func (*RotateFileVaultKey) ProtoMessage() {}
 
 func (x *RotateFileVaultKey) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[66]
+	mi := &file_mdm_proto_msgTypes[68]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4437,7 +4586,7 @@ func (x *RotateFileVaultKey) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use RotateFileVaultKey.ProtoReflect.Descriptor instead.
 func (*RotateFileVaultKey) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{66}
+	return file_mdm_proto_rawDescGZIP(), []int{68}
 }
 
 func (x *RotateFileVaultKey) GetKeyType() string {
@@ -4481,7 +4630,7 @@ type FileVaultUnlock struct {
 func (x *FileVaultUnlock) Reset() {
 	*x = FileVaultUnlock{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[67]
+		mi := &file_mdm_proto_msgTypes[69]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4494,7 +4643,7 @@ func (x *FileVaultUnlock) String() string {
 func (*FileVaultUnlock) ProtoMessage() {}
 
 func (x *FileVaultUnlock) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[67]
+	mi := &file_mdm_proto_msgTypes[69]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4507,7 +4656,7 @@ func (x *FileVaultUnlock) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use FileVaultUnlock.ProtoReflect.Descriptor instead.
 func (*FileVaultUnlock) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{67}
+	return file_mdm_proto_rawDescGZIP(), []int{69}
 }
 
 func (x *FileVaultUnlock) GetPassword() string {
@@ -4542,7 +4691,7 @@ type SetBootstrapToken struct {
 func (x *SetBootstrapToken) Reset() {
 	*x = SetBootstrapToken{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[68]
+		mi := &file_mdm_proto_msgTypes[70]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4555,7 +4704,7 @@ func (x *SetBootstrapToken) String() string {
 func (*SetBootstrapToken) ProtoMessage() {}
 
 func (x *SetBootstrapToken) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[68]
+	mi := &file_mdm_proto_msgTypes[70]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4568,7 +4717,7 @@ func (x *SetBootstrapToken) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use SetBootstrapToken.ProtoReflect.Descriptor instead.
 func (*SetBootstrapToken) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{68}
+	return file_mdm_proto_rawDescGZIP(), []int{70}
 }
 
 func (x *SetBootstrapToken) GetBootstrapToken() string {
@@ -4591,7 +4740,7 @@ type ResultPayload struct {
 func (x *ResultPayload) Reset() {
 	*x = ResultPayload{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[69]
+		mi := &file_mdm_proto_msgTypes[71]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4604,7 +4753,7 @@ func (x *ResultPayload) String() string {
 func (*ResultPayload) ProtoMessage() {}
 
 func (x *ResultPayload) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[69]
+	mi := &file_mdm_proto_msgTypes[71]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4617,7 +4766,7 @@ func (x *ResultPayload) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ResultPayload.ProtoReflect.Descriptor instead.
 func (*ResultPayload) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{69}
+	return file_mdm_proto_rawDescGZIP(), []int{71}
 }
 
 func (x *ResultPayload) GetUdid() string {
@@ -4658,7 +4807,7 @@ type ErrorChain struct {
 func (x *ErrorChain) Reset() {
 	*x = ErrorChain{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[70]
+		mi := &file_mdm_proto_msgTypes[72]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4671,7 +4820,7 @@ func (x *ErrorChain) String() string {
 func (*ErrorChain) ProtoMessage() {}
 
 func (x *ErrorChain) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[70]
+	mi := &file_mdm_proto_msgTypes[72]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4684,7 +4833,7 @@ func (x *ErrorChain) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ErrorChain.ProtoReflect.Descriptor instead.
 func (*ErrorChain) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{70}
+	return file_mdm_proto_rawDescGZIP(), []int{72}
 }
 
 func (x *ErrorChain) GetLocalizedDescription() string {
@@ -4726,7 +4875,7 @@ type RefreshCellularPlans struct {
 func (x *RefreshCellularPlans) Reset() {
 	*x = RefreshCellularPlans{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[71]
+		mi := &file_mdm_proto_msgTypes[73]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4739,7 +4888,7 @@ func (x *RefreshCellularPlans) String() string {
 func (*RefreshCellularPlans) ProtoMessage() {}
 
 func (x *RefreshCellularPlans) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[71]
+	mi := &file_mdm_proto_msgTypes[73]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4752,7 +4901,7 @@ func (x *RefreshCellularPlans) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use RefreshCellularPlans.ProtoReflect.Descriptor instead.
 func (*RefreshCellularPlans) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{71}
+	return file_mdm_proto_rawDescGZIP(), []int{73}
 }
 
 func (x *RefreshCellularPlans) GetEsimServerUrl() string {
@@ -4772,7 +4921,7 @@ var file_mdm_proto_rawDesc = []byte{
 	0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x07, 0x63, 0x6f,
 	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x64,
 	0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07,
-	0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x9f, 0x19, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d,
+	0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0xf7, 0x19, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d,
 	0x61, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74,
 	0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65,
 	0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
@@ -4973,553 +5122,585 @@ var file_mdm_proto_rawDesc = []byte{
 	0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61,
 	0x72, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73,
-	0x68, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x42, 0x09,
-	0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2a, 0x0a, 0x0e, 0x49, 0x6e, 0x73,
-	0x74, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70,
-	0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61,
-	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x2f, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50,
-	0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
-	0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x4f, 0x0a, 0x1a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c,
-	0x6c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f,
-	0x66, 0x69, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f,
-	0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0c, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67,
-	0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x2f, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76,
-	0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f,
-	0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x68, 0x0a, 0x18, 0x49, 0x6e, 0x73, 0x74,
-	0x61, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
-	0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74,
-	0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
-	0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x4f, 0x6e,
-	0x6c, 0x79, 0x22, 0x2d, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f,
-	0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69,
-	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65,
-	0x73, 0x22, 0x32, 0x0a, 0x0d, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x73, 0x73, 0x63, 0x6f,
-	0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x6f, 0x6b,
-	0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b,
-	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5b, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c,
-	0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x03, 0x70, 0x69, 0x6e, 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, 0x12,
-	0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62,
-	0x65, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x0b, 0x45, 0x72, 0x61, 0x73, 0x65, 0x44, 0x65, 0x76, 0x69,
-	0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x03, 0x70, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,
-	0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x10, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6c,
-	0x61, 0x6e, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70,
-	0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72,
-	0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x53, 0x65, 0x74, 0x75, 0x70, 0x22, 0xaa, 0x01, 0x0a,
-	0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x69, 0x6e,
-	0x67, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73,
-	0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15,
-	0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x76, 0x69,
-	0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x73,
-	0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64,
-	0x12, 0x1b, 0x0a, 0x09, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a,
-	0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0c, 0x52, 0x65, 0x73,
-	0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x72, 0x6f,
-	0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
-	0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2f, 0x0a, 0x11,
-	0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
-	0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a,
-	0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75,
-	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75,
-	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65,
-	0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0d, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69,
-	0x0a, 0x0e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65,
-	0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68,
-	0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x6f, 0x6f, 0x74, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x6f, 0x6f, 0x74, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0xba, 0x03, 0x0a, 0x12, 0x49, 0x6e,
+	0x68, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x56,
+	0x0a, 0x17, 0x6c, 0x6f, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1a, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x4f, 0x4d, 0x44, 0x65,
+	0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x17, 0x6c,
+	0x6f, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43,
+	0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x22, 0x2a, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x66,
+	0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x2f, 0x0a,
+	0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1e,
+	0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x4f,
+	0x0a, 0x1a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69,
+	0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x14,
+	0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x6f,
+	0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x76,
+	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22,
+	0x2f, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69,
+	0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04,
+	0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64,
+	0x22, 0x68, 0x0a, 0x18, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x70, 0x70,
+	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b,
+	0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x2a,
+	0x0a, 0x11, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x5f, 0x6f,
+	0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67,
+	0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x2d, 0x0a, 0x11, 0x44, 0x65,
+	0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+	0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
+	0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0x32, 0x0a, 0x0d, 0x43, 0x6c, 0x65,
+	0x61, 0x72, 0x50, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e,
+	0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x0b, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5b, 0x0a,
+	0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x70,
+	0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 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, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65,
+	0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70,
+	0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x0b, 0x45,
+	0x72, 0x61, 0x73, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69,
+	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x12,
+	0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6c,
+	0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72,
+	0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69,
+	0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79,
+	0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69,
+	0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x53,
+	0x65, 0x74, 0x75, 0x70, 0x22, 0xaa, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x63, 0x61, 0x6e,
+	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x61,
+	0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
+	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
+	0x64, 0x22, 0x41, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73,
+	0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x13, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2f, 0x0a, 0x11, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73,
+	0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65,
+	0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65,
+	0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55,
+	0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+	0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f,
+	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65,
+	0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x0e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
+	0x4c, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62,
+	0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e,
+	0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x6f, 0x6f, 0x74, 0x6e, 0x6f, 0x74,
+	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6f, 0x6f, 0x74, 0x6e, 0x6f, 0x74,
+	0x65, 0x22, 0xba, 0x03, 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70,
+	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x75, 0x6e,
+	0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0d, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64,
+	0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
+	0x12, 0x3d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x73,
+	0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+	0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x55,
+	0x72, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
+	0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61,
+	0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x4f, 0x0a,
+	0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+	0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46,
+	0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e,
 	0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65,
-	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69, 0x74, 0x75, 0x6e, 0x65,
-	0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64,
-	0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x64, 0x6d, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c,
-	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x69, 0x66,
-	0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d,
-	0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61,
-	0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
-	0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
-	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d,
-	0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41,
+	0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72,
+	0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
+	0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74,
+	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d,
+	0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x44,
+	0x0a, 0x19, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70,
+	0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4d, 0x65,
+	0x74, 0x68, 0x6f, 0x64, 0x22, 0x21, 0x0a, 0x1f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41,
 	0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
-	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
-	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62,
-	0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x64, 0x6d,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70,
-	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
-	0x65, 0x73, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x36,
-	0x0a, 0x17, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
-	0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x15, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
-	0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x44, 0x0a, 0x19, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c,
-	0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x5f,
-	0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x75,
-	0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x21, 0x0a, 0x1f,
-	0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
-	0x1e, 0x0a, 0x1c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22,
-	0xf9, 0x01, 0x0a, 0x1c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x65, 0x72,
-	0x70, 0x72, 0x69, 0x73, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x61,
-	0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
-	0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
-	0x55, 0x72, 0x6c, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f,
-	0x75, 0x72, 0x6c, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x65, 0x72, 0x74,
-	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x17, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
-	0x74, 0x55, 0x72, 0x6c, 0x50, 0x69, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x65, 0x72, 0x74, 0x73,
-	0x12, 0x49, 0x0a, 0x21, 0x70, 0x69, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x76, 0x6f,
-	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71,
-	0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1e, 0x70, 0x69, 0x6e,
-	0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68,
-	0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x49, 0x0a, 0x08, 0x4d,
-	0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x69, 0x66,
-	0x65, 0x73, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x16, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66,
-	0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
-	0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x67, 0x0a, 0x0c, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
-	0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73,
-	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12,
-	0x2e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x74,
-	0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22,
-	0x97, 0x01, 0x0a, 0x05, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a,
-	0x08, 0x6d, 0x64, 0x35, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x07, 0x6d, 0x64, 0x35, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x64, 0x35, 0x73,
-	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x64, 0x35, 0x73, 0x12, 0x10, 0x0a, 0x03,
-	0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f,
-	0x0a, 0x0b, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x53, 0x69, 0x7a, 0x65, 0x12,
-	0x18, 0x0a, 0x07, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x07, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x73, 0x22, 0xf4, 0x01, 0x0a, 0x08, 0x4d, 0x65,
-	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65,
-	0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
-	0x69, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x76, 0x65,
-	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x6e,
-	0x64, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x74,
-	0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x64, 0x6d, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
-	0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75,
-	0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75,
-	0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0d,
-	0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73,
-	0x22, 0x60, 0x0a, 0x0a, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b,
+	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1e, 0x0a, 0x1c, 0x49, 0x6e, 0x73, 0x74, 0x61,
+	0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74,
+	0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0xf9, 0x01, 0x0a, 0x1c, 0x49, 0x6e, 0x73, 0x74,
+	0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x41, 0x70, 0x70,
+	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69,
+	0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x64, 0x6d,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x08,
+	0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x69,
+	0x66, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+	0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x3b, 0x0a, 0x1a, 0x6d,
+	0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x70, 0x69, 0x6e, 0x6e,
+	0x69, 0x6e, 0x67, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52,
+	0x17, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x50, 0x69, 0x6e, 0x6e,
+	0x69, 0x6e, 0x67, 0x43, 0x65, 0x72, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x21, 0x70, 0x69, 0x6e, 0x6e,
+	0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63,
+	0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x1e, 0x70, 0x69, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x76, 0x6f,
+	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x69,
+	0x72, 0x65, 0x64, 0x22, 0x49, 0x0a, 0x08, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12,
+	0x3d, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d,
+	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52,
+	0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x67,
+	0x0a, 0x0c, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27,
+	0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f,
+	0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52,
+	0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+	0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x64, 0x6d, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d,
+	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x97, 0x01, 0x0a, 0x05, 0x41, 0x73, 0x73, 0x65,
+	0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x64, 0x35, 0x5f, 0x73, 0x69, 0x7a,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x64, 0x35, 0x53, 0x69, 0x7a, 0x65,
+	0x12, 0x12, 0x0a, 0x04, 0x6d, 0x64, 0x35, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
+	0x6d, 0x64, 0x35, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36,
+	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x68, 0x61,
+	0x32, 0x35, 0x36, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x61, 0x32, 0x35,
+	0x36, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36,
+	0x73, 0x22, 0xf4, 0x01, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b,
 	0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
 	0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c,
 	0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x62,
 	0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
 	0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69,
-	0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x64, 0x65, 0x6d,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65,
-	0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69,
-	0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x64,
-	0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x64, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
-	0x64, 0x65, 0x22, 0x3a, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70,
-	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b,
-	0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x33,
-	0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
-	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
-	0x69, 0x65, 0x72, 0x22, 0x57, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x50,
-	0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,
-	0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x67,
-	0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69,
-	0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x22, 0x38, 0x0a, 0x14,
-	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
+	0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x75, 0x6e,
+	0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12,
+	0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69,
+	0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14,
+	0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
+	0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x5f,
+	0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x69, 0x7a,
+	0x65, 0x49, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x0a, 0x42, 0x75, 0x6e, 0x64,
+	0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65,
+	0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
+	0x69, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x76, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x6e,
+	0x64, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x13, 0x41, 0x70,
+	0x70, 0x6c, 0x79, 0x52, 0x65, 0x64, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64,
+	0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
+	0x72, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x64, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+	0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x64, 0x65,
+	0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x0a, 0x16, 0x4d, 0x61,
+	0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
 	0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74,
-	0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x9f, 0x04, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
-	0x4c, 0x0a, 0x23, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f,
-	0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x72,
-	0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x73, 0x6b,
-	0x69, 0x70, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x63,
-	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a,
-	0x29, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x74,
-	0x75, 0x70, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x72, 0x65,
-	0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x23, 0x73, 0x65, 0x74, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x75,
-	0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61,
-	0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x53, 0x0a, 0x27, 0x64, 0x6f, 0x6e, 0x74, 0x5f, 0x61, 0x75,
-	0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d,
-	0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x22, 0x64, 0x6f, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x6f,
-	0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41,
-	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x19, 0x6c, 0x6f,
-	0x63, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x6c,
-	0x6f, 0x63, 0x6b, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
-	0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79,
-	0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61,
-	0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72,
-	0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65,
-	0x12, 0x39, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f,
-	0x75, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f,
-	0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5b, 0x0a, 0x19, 0x61,
-	0x75, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f,
-	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
-	0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x65,
+	0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x33, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+	0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69,
+	0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x57, 0x0a, 0x0f, 0x49,
+	0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x1d,
+	0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x25, 0x0a,
+	0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x55, 0x72, 0x6c, 0x22, 0x38, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
+	0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b,
+	0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x9f,
+	0x04, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x23, 0x73, 0x6b, 0x69, 0x70, 0x5f,
+	0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x63,
+	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72,
+	0x79, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x29, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69,
+	0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x75, 0x73,
+	0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x23, 0x73, 0x65, 0x74, 0x50, 0x72, 0x69,
+	0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x41, 0x73, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x53, 0x0a,
+	0x27, 0x64, 0x6f, 0x6e, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c,
+	0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f,
+	0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x22,
+	0x64, 0x6f, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65,
+	0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e,
+	0x66, 0x6f, 0x12, 0x39, 0x0a, 0x19, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61,
+	0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x69, 0x6d, 0x61,
+	0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a,
+	0x19, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x16, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x46, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6d,
+	0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72,
+	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x72, 0x69,
+	0x6d, 0x61, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4e,
+	0x61, 0x6d, 0x65, 0x12, 0x5b, 0x0a, 0x19, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x74, 0x75,
+	0x70, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73,
+	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e,
+	0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x53, 0x65,
 	0x74, 0x75, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73,
-	0x52, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e,
-	0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x16, 0x41, 0x75, 0x74,
-	0x6f, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d,
-	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61,
-	0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12,
-	0x23, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64,
-	0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x22, 0x72, 0x0a, 0x0c,
-	0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x26, 0x0a, 0x0f,
-	0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x53, 0x74, 0x6f,
-	0x72, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x75, 0x72,
-	0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72,
-	0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65,
-	0x22, 0x79, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12,
-	0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26,
-	0x0a, 0x0f, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69,
-	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x53,
-	0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73,
-	0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70,
-	0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x08, 0x53,
-	0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69,
-	0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x64, 0x6d, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x65,
-	0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xf9, 0x08, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69,
-	0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
-	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x64,
-	0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d,
-	0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
-	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
-	0x67, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x76,
-	0x6f, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x56, 0x6f,
-	0x69, 0x63, 0x65, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
-	0x67, 0x52, 0x0c, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12,
-	0x4b, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x74, 0x73,
-	0x70, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x64, 0x6d, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x48, 0x6f, 0x74,
-	0x73, 0x70, 0x6f, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x70, 0x65, 0x72,
-	0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x48, 0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x12, 0x38, 0x0a, 0x09,
-	0x77, 0x61, 0x6c, 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x1a, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x70,
-	0x61, 0x70, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x77, 0x61, 0x6c,
-	0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72,
-	0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d,
-	0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x6f, 0x61, 0x6d,
-	0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61,
-	0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x74,
-	0x6f, 0x6f, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x64, 0x6d,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x53,
-	0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74,
-	0x68, 0x12, 0x5d, 0x0a, 0x16, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70,
-	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
-	0x65, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69,
-	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
-	0x12, 0x3c, 0x0a, 0x0b, 0x6d, 0x64, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69,
-	0x6e, 0x67, 0x52, 0x0a, 0x6d, 0x64, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x65,
-	0x0a, 0x1a, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
-	0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61,
-	0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50,
-	0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x17, 0x70, 0x61,
-	0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50,
-	0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x5b, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d,
-	0x5f, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18,
-	0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74,
-	0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x14, 0x6d, 0x61,
-	0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65,
-	0x72, 0x73, 0x12, 0x5a, 0x0a, 0x15, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63,
-	0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x69, 0x61,
+	0x22, 0x91, 0x01, 0x0a, 0x16, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64,
+	0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
+	0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75,
+	0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66,
+	0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x77,
+	0x6f, 0x72, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c,
+	0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06,
+	0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69,
+	0x64, 0x64, 0x65, 0x6e, 0x22, 0x72, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4d,
+	0x65, 0x64, 0x69, 0x61, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x5f, 0x73,
+	0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69,
+	0x74, 0x75, 0x6e, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
+	0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x64,
+	0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d,
+	0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x22, 0x79, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f,
+	0x76, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61,
+	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64,
+	0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73,
+	0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x0d, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, 0x23,
+	0x0a, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
+	0x74, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x10, 0x4c, 0x4f, 0x4d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d,
+	0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x4f, 0x4d, 0x44, 0x65, 0x76, 0x69, 0x63,
+	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52,
+	0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xbf, 0x02, 0x0a,
+	0x17, 0x4c, 0x4f, 0x4d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x76, 0x69,
+	0x63, 0x65, 0x44, 0x4e, 0x53, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x44, 0x4e, 0x53, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c,
+	0x0a, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54,
+	0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63,
+	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x11,
+	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x55, 0x55, 0x49,
+	0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x6c, 0x6f,
+	0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+	0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x16, 0x70, 0x72,
+	0x69, 0x6d, 0x61, 0x72, 0x79, 0x49, 0x50, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
+	0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6d,
+	0x61, 0x72, 0x79, 0x49, 0x50, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69,
+	0x73, 0x74, 0x12, 0x3a, 0x0a, 0x18, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x49,
+	0x50, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x06,
+	0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x49,
+	0x50, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x39,
+	0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x73, 0x65,
+	0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d,
+	0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52,
+	0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xf9, 0x08, 0x0a, 0x07, 0x53, 0x65,
+	0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x64, 0x65, 0x76,
+	0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
+	0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
+	0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x64, 0x65, 0x76,
+	0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x64, 0x6d, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74,
+	0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42,
+	0x0a, 0x0d, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74,
+	0x74, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x61, 0x6d, 0x69,
+	0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x68,
+	0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d,
+	0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c,
+	0x48, 0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0f,
+	0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x48, 0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x12,
+	0x38, 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x61,
+	0x6c, 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x09,
+	0x77, 0x61, 0x6c, 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0c, 0x64, 0x61, 0x74,
+	0x61, 0x5f, 0x72, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1c, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52,
+	0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x64,
+	0x61, 0x74, 0x61, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x62, 0x6c,
+	0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+	0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f,
+	0x74, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x74,
+	0x6f, 0x6f, 0x74, 0x68, 0x12, 0x5d, 0x0a, 0x16, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69,
+	0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x15, 0x61, 0x70,
+	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
+	0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x6d, 0x64, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65,
+	0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x6d, 0x64, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x12, 0x65, 0x0a, 0x1a, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x6f,
+	0x63, 0x6b, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18,
+	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x50, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61,
+	0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52,
+	0x17, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61,
+	0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x5b, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x69,
+	0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65,
+	0x72, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64,
+	0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52,
+	0x14, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74,
+	0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x15, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73,
+	0x74, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0d,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73,
+	0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x14, 0x64, 0x69, 0x61,
 	0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
-	0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x14, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f,
-	0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x42,
-	0x0a, 0x0d, 0x61, 0x70, 0x70, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x18,
-	0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x41, 0x70, 0x70, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x65, 0x74,
-	0x74, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
-	0x63, 0x73, 0x12, 0x66, 0x0a, 0x19, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
-	0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
-	0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
-	0x52, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e,
-	0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x69,
-	0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
-	0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e,
-	0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f,
-	0x6e, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x61, 0x6d, 0x69,
-	0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61,
-	0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62,
-	0x6c, 0x65, 0x64, 0x22, 0x32, 0x0a, 0x16, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x48,
-	0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a,
-	0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
-	0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x57, 0x61, 0x6c, 0x6c, 0x70,
-	0x61, 0x70, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x69,
-	0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67,
-	0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x22, 0x2e, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x61, 0x52,
-	0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a,
-	0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
-	0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x2c, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x74,
-	0x6f, 0x6f, 0x74, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65,
-	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e,
-	0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x96, 0x01, 0x0a, 0x1c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53,
-	0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
-	0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x16, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74,
-	0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x85,
-	0x01, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
-	0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69,
-	0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
-	0x65, 0x72, 0x12, 0x42, 0x0a, 0x1d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x64,
-	0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x66, 0x69,
-	0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x32, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12,
-	0x19, 0x0a, 0x08, 0x76, 0x70, 0x6e, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x07, 0x76, 0x70, 0x6e, 0x55, 0x75, 0x69, 0x64, 0x22, 0x34, 0x0a, 0x11, 0x44, 0x65,
-	0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12,
-	0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65,
-	0x22, 0x2e, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x74,
-	0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65,
-	0x22, 0x2d, 0x0a, 0x0f, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x74,
-	0x69, 0x6e, 0x67, 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, 0x22,
-	0x4a, 0x0a, 0x11, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, 0x74,
-	0x74, 0x69, 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x0b, 0x6d, 0x64, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x64, 0x6d, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
-	0x0a, 0x6d, 0x64, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x0a,
-	0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x28, 0x61, 0x63,
-	0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x6c,
-	0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x65,
-	0x72, 0x76, 0x69, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x24, 0x61, 0x63,
-	0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x41, 0x6c, 0x6c, 0x6f,
-	0x77, 0x65, 0x64, 0x57, 0x68, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73,
-	0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f,
-	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x15, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f,
-	0x6b, 0x65, 0x6e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x37, 0x70, 0x72,
-	0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x6c, 0x6c,
-	0x6f, 0x77, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x74, 0x6f, 0x6b,
-	0x65, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x30, 0x70, 0x72, 0x6f,
-	0x6d, 0x70, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x42, 0x6f,
-	0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x6f, 0x72, 0x41,
-	0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5d, 0x0a,
-	0x1e, 0x50, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61,
-	0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12,
-	0x3b, 0x0a, 0x1a, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b,
-	0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x17, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63,
-	0x6b, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x53, 0x0a, 0x1b,
-	0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x55,
-	0x73, 0x65, 0x72, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x6d,
-	0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x5f,
-	0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x6d, 0x61, 0x78,
-	0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72,
-	0x73, 0x22, 0x37, 0x0a, 0x1b, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x53,
-	0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+	0x6e, 0x12, 0x42, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
+	0x63, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73,
+	0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x41, 0x6e, 0x61, 0x6c,
+	0x79, 0x74, 0x69, 0x63, 0x73, 0x12, 0x66, 0x0a, 0x19, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74,
+	0x69, 0x6e, 0x67, 0x52, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a,
+	0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x19, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+	0x5a, 0x6f, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x74, 0x69, 0x6d,
+	0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x6f,
+	0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07,
+	0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65,
+	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x32, 0x0a, 0x16, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e,
+	0x61, 0x6c, 0x48, 0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
 	0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x2f, 0x0a, 0x13, 0x41, 0x70,
-	0x70, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
-	0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x43, 0x0a, 0x1f, 0x4d,
-	0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20,
-	0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73,
-	0x22, 0x40, 0x0a, 0x1c, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69,
-	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
-	0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
-	0x72, 0x73, 0x22, 0x67, 0x0a, 0x1a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70,
-	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b,
-	0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
-	0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x66, 0x65, 0x65,
-	0x64, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x65, 0x6c,
-	0x65, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x22, 0xcb, 0x01, 0x0a, 0x13,
-	0x53, 0x65, 0x74, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77,
-	0x6f, 0x72, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70,
-	0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63,
-	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21,
-	0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
-	0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x6f, 0x6d, 0x73,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x6f,
-	0x6d, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65,
-	0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74,
-	0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x72, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4e, 0x65, 0x74, 0x77,
-	0x6f, 0x72, 0x6b, 0x54, 0x65, 0x74, 0x68, 0x65, 0x72, 0x22, 0x34, 0x0a, 0x16, 0x56, 0x65, 0x72,
-	0x69, 0x66, 0x79, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77,
-	0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22,
-	0xc7, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4c,
-	0x6f, 0x63, 0x6b, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70,
-	0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63,
-	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21,
-	0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
-	0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x6f, 0x6d, 0x73,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x6f,
-	0x6d, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65,
-	0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74,
-	0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x72, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4e, 0x65, 0x74, 0x77,
-	0x6f, 0x72, 0x6b, 0x54, 0x65, 0x74, 0x68, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x12, 0x56, 0x65, 0x72,
-	0x69, 0x66, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4c, 0x6f, 0x63, 0x6b, 0x12,
-	0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x4f, 0x0a, 0x14, 0x53,
-	0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77,
-	0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x04, 0x67, 0x75, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x77,
-	0x6f, 0x72, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c,
-	0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x48, 0x61, 0x73, 0x68, 0x22, 0x3e, 0x0a, 0x10,
-	0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4f, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
-	0x12, 0x2a, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64,
-	0x61, 0x74, 0x65, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0xc3, 0x01, 0x0a,
-	0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75,
-	0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72,
-	0x6f, 0x64, 0x75, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x64,
-	0x75, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
-	0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x63, 0x74,
-	0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61,
-	0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f,
-	0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66,
-	0x65, 0x72, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
-	0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
-	0x74, 0x79, 0x22, 0x2c, 0x0a, 0x14, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4f, 0x53,
-	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f,
-	0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65,
-	0x22, 0x4c, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x53, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
-	0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74,
-	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xe0,
-	0x01, 0x0a, 0x12, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x75,
-	0x6c, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70,
-	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65,
-	0x12, 0x44, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x6e,
-	0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x64, 0x6d,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x55,
-	0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0f, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x61, 0x75, 0x6c, 0x74,
-	0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x65,
-	0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x0e, 0x6e, 0x65, 0x77, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12,
-	0x40, 0x0a, 0x1c, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x45, 0x6e, 0x63, 0x72,
-	0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
-	0x65, 0x22, 0x9a, 0x01, 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x55,
-	0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
-	0x64, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79,
-	0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x70,
-	0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12,
-	0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65,
-	0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79,
-	0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x3c,
-	0x0a, 0x11, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f,
-	0x6b, 0x65, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70,
-	0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6f,
-	0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd2, 0x01, 0x0a,
-	0x0d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12,
-	0x0a, 0x04, 0x75, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x64,
-	0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x75, 0x75,
-	0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
-	0x64, 0x55, 0x75, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63,
-	0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x64, 0x6d,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e,
-	0x52, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x53, 0x0a, 0x06,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77,
-	0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f,
-	0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x46, 0x6f,
-	0x72, 0x6d, 0x61, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x49,
-	0x64, 0x6c, 0x65, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x6f, 0x74, 0x4e, 0x6f, 0x77, 0x10,
-	0x04, 0x22, 0xb9, 0x01, 0x0a, 0x0a, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e,
-	0x12, 0x33, 0x0a, 0x15, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x64, 0x65,
-	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x75, 0x73, 0x5f, 0x65, 0x6e, 0x67, 0x6c,
-	0x69, 0x73, 0x68, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68,
-	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x65,
-	0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1d,
-	0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x3e, 0x0a,
-	0x14, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72,
-	0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x65, 0x73, 0x69, 0x6d, 0x5f, 0x73, 0x65,
-	0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
-	0x65, 0x73, 0x69, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x42, 0x38, 0x5a,
-	0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x63, 0x72,
-	0x6f, 0x6d, 0x64, 0x6d, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x6d, 0x64, 0x6d, 0x2f, 0x6d, 0x64,
-	0x6d, 0x2f, 0x6d, 0x64, 0x6d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d,
-	0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x57, 0x61,
+	0x6c, 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x14,
+	0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69,
+	0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x22, 0x2e, 0x0a, 0x12, 0x44, 0x61,
+	0x74, 0x61, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+	0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x2c, 0x0a, 0x10, 0x42, 0x6c,
+	0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18,
+	0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x96, 0x01, 0x0a, 0x1c, 0x41, 0x70, 0x70,
+	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
+	0x65, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65,
+	0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69,
+	0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x16, 0x61, 0x70, 0x70,
+	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
+	0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x64, 0x6d, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x15, 0x61, 0x70, 0x70, 0x6c,
+	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
+	0x73, 0x22, 0x85, 0x01, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65,
+	0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
+	0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74,
+	0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x1d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75,
+	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72,
+	0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1b, 0x63, 0x6f,
+	0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x32, 0x0a, 0x15, 0x41, 0x70, 0x70,
+	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
+	0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x70, 0x6e, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x70, 0x6e, 0x55, 0x75, 0x69, 0x64, 0x22, 0x34, 0x0a,
+	0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69,
+	0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e,
+	0x61, 0x6d, 0x65, 0x22, 0x2e, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x53,
+	0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a,
+	0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a,
+	0x6f, 0x6e, 0x65, 0x22, 0x2d, 0x0a, 0x0f, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53,
+	0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 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, 0x22, 0x4a, 0x0a, 0x11, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x0b, 0x6d, 0x64, 0x6d, 0x5f, 0x6f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d,
+	0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x52, 0x0a, 0x6d, 0x64, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8f,
+	0x02, 0x0a, 0x0a, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a,
+	0x28, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x6b,
+	0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x5f, 0x73,
+	0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x24, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x41,
+	0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x68, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x70, 0x65, 0x72,
+	0x76, 0x69, 0x73, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72,
+	0x61, 0x70, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61,
+	0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x71, 0x0a,
+	0x37, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x5f,
+	0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f,
+	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e,
+	0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x30,
+	0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x6c, 0x6c, 0x6f,
+	0x77, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46,
+	0x6f, 0x72, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x22, 0x5d, 0x0a, 0x1e, 0x50, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b,
+	0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69,
+	0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x1a, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6c,
+	0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65,
+	0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22,
+	0x53, 0x0a, 0x1b, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65,
+	0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x34,
+	0x0a, 0x16, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65,
+	0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14,
+	0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x55,
+	0x73, 0x65, 0x72, 0x73, 0x22, 0x37, 0x0a, 0x1b, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74,
+	0x69, 0x63, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74,
+	0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x2f, 0x0a,
+	0x13, 0x41, 0x70, 0x70, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x65, 0x74,
+	0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x43,
+	0x0a, 0x1f, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
+	0x65, 0x72, 0x73, 0x22, 0x40, 0x0a, 0x1c, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70,
+	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
+	0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
+	0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+	0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x67, 0x0a, 0x1a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64,
+	0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x64, 0x62,
+	0x61, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
+	0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+	0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f,
+	0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
+	0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x22, 0xcb,
+	0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x50, 0x61,
+	0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+	0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
+	0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
+	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73,
+	0x77, 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72,
+	0x6f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
+	0x4f, 0x72, 0x6f, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+	0x6b, 0x5f, 0x74, 0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c,
+	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x65, 0x74, 0x68, 0x65, 0x72, 0x22, 0x34, 0x0a, 0x16,
+	0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x50, 0x61,
+	0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
+	0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
+	0x72, 0x64, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65,
+	0x72, 0x79, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
+	0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
+	0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
+	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73,
+	0x77, 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72,
+	0x6f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
+	0x4f, 0x72, 0x6f, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+	0x6b, 0x5f, 0x74, 0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c,
+	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x65, 0x74, 0x68, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x12,
+	0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4c, 0x6f,
+	0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x4f,
+	0x0a, 0x14, 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61,
+	0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x75, 0x69, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x75, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61,
+	0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0c, 0x52, 0x0c, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x48, 0x61, 0x73, 0x68, 0x22,
+	0x3e, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4f, 0x53, 0x55, 0x70, 0x64,
+	0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22,
+	0xc3, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72,
+	0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x70,
+	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x56, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f,
+	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e,
+	0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6d,
+	0x61, 0x78, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c,
+	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x55, 0x73, 0x65, 0x72,
+	0x44, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69,
+	0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69,
+	0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x2c, 0x0a, 0x14, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+	0x65, 0x4f, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x14, 0x0a,
+	0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f,
+	0x72, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x53, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x66, 0x69, 0x6c,
+	0x74, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f,
+	0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x66, 0x69, 0x6c, 0x74,
+	0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74,
+	0x73, 0x22, 0xe0, 0x01, 0x0a, 0x12, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65,
+	0x56, 0x61, 0x75, 0x6c, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f,
+	0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x54,
+	0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x61, 0x75, 0x6c, 0x74,
+	0x5f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+	0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x75,
+	0x6c, 0x74, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0f, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x61,
+	0x75, 0x6c, 0x74, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x65, 0x77,
+	0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x0c, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
+	0x74, 0x65, 0x12, 0x40, 0x0a, 0x1c, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x65, 0x6e, 0x63, 0x72,
+	0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
+	0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x45,
+	0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
+	0x63, 0x61, 0x74, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x75,
+	0x6c, 0x74, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73,
+	0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73,
+	0x77, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f,
+	0x6b, 0x65, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x10, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, 0x6f,
+	0x72, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65,
+	0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
+	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
+	0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
+	0x64, 0x22, 0x3c, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61,
+	0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74,
+	0x72, 0x61, 0x70, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0e, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
+	0xd2, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+	0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x04, 0x75, 0x64, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
+	0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d,
+	0x6d, 0x61, 0x6e, 0x64, 0x55, 0x75, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f,
+	0x72, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e,
+	0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68,
+	0x61, 0x69, 0x6e, 0x52, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22,
+	0x53, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x63, 0x6b,
+	0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45,
+	0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
+	0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x02, 0x12, 0x08,
+	0x0a, 0x04, 0x49, 0x64, 0x6c, 0x65, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x6f, 0x74, 0x4e,
+	0x6f, 0x77, 0x10, 0x04, 0x22, 0xb9, 0x01, 0x0a, 0x0a, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68,
+	0x61, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
+	0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x44, 0x65, 0x73,
+	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x75, 0x73, 0x5f, 0x65,
+	0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x6c,
+	0x69, 0x73, 0x68, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21,
+	0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69,
+	0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65,
+	0x22, 0x3e, 0x0a, 0x14, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x65, 0x6c, 0x6c, 0x75,
+	0x6c, 0x61, 0x72, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x65, 0x73, 0x69, 0x6d,
+	0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0d, 0x65, 0x73, 0x69, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c,
+	0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d,
+	0x69, 0x63, 0x72, 0x6f, 0x6d, 0x64, 0x6d, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x6d, 0x64, 0x6d,
+	0x2f, 0x6d, 0x64, 0x6d, 0x2f, 0x6d, 0x64, 0x6d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
+	0x6c, 0x2f, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
 }
 
 var (
@@ -5535,7 +5716,7 @@ func file_mdm_proto_rawDescGZIP() []byte {
 }
 
 var file_mdm_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_mdm_proto_msgTypes = make([]protoimpl.MessageInfo, 72)
+var file_mdm_proto_msgTypes = make([]protoimpl.MessageInfo, 74)
 var file_mdm_proto_goTypes = []interface{}{
 	(ResultPayload_Status)(0),               // 0: mdmproto.ResultPayload.Status
 	(*CommandPayload)(nil),                  // 1: mdmproto.CommandPayload
@@ -5573,43 +5754,45 @@ var file_mdm_proto_goTypes = []interface{}{
 	(*AutoSetupAdminAccounts)(nil),          // 33: mdmproto.AutoSetupAdminAccounts
 	(*InstallMedia)(nil),                    // 34: mdmproto.InstallMedia
 	(*RemoveMedia)(nil),                     // 35: mdmproto.RemoveMedia
-	(*Settings)(nil),                        // 36: mdmproto.Settings
-	(*Setting)(nil),                         // 37: mdmproto.Setting
-	(*VoiceRoamingSetting)(nil),             // 38: mdmproto.VoiceRoamingSetting
-	(*PersonalHotspotSetting)(nil),          // 39: mdmproto.PersonalHotspotSetting
-	(*WallpaperSetting)(nil),                // 40: mdmproto.WallpaperSetting
-	(*DataRoamingSetting)(nil),              // 41: mdmproto.DataRoamingSetting
-	(*BluetoothSetting)(nil),                // 42: mdmproto.BluetoothSetting
-	(*ApplicationAttributesSetting)(nil),    // 43: mdmproto.ApplicationAttributesSetting
-	(*ApplicationConfigurationSetting)(nil), // 44: mdmproto.ApplicationConfigurationSetting
-	(*ApplicationAttributes)(nil),           // 45: mdmproto.ApplicationAttributes
-	(*DeviceNameSetting)(nil),               // 46: mdmproto.DeviceNameSetting
-	(*TimeZoneSetting)(nil),                 // 47: mdmproto.TimeZoneSetting
-	(*HostnameSetting)(nil),                 // 48: mdmproto.HostnameSetting
-	(*MDMOptionsSetting)(nil),               // 49: mdmproto.MDMOptionsSetting
-	(*MDMOptions)(nil),                      // 50: mdmproto.MDMOptions
-	(*PasscodeLockGracePeriodSetting)(nil),  // 51: mdmproto.PasscodeLockGracePeriodSetting
-	(*MaximumResidentUsersSetting)(nil),     // 52: mdmproto.MaximumResidentUsersSetting
-	(*DiagnosticSubmissionSetting)(nil),     // 53: mdmproto.DiagnosticSubmissionSetting
-	(*AppAnalyticsSetting)(nil),             // 54: mdmproto.AppAnalyticsSetting
-	(*ManagedApplicationConfiguration)(nil), // 55: mdmproto.ManagedApplicationConfiguration
-	(*ManagedApplicationAttributes)(nil),    // 56: mdmproto.ManagedApplicationAttributes
-	(*ManagedApplicationFeedback)(nil),      // 57: mdmproto.ManagedApplicationFeedback
-	(*SetFirmwarePassword)(nil),             // 58: mdmproto.SetFirmwarePassword
-	(*VerifyFirmwarePassword)(nil),          // 59: mdmproto.VerifyFirmwarePassword
-	(*SetRecoveryLock)(nil),                 // 60: mdmproto.SetRecoveryLock
-	(*VerifyRecoveryLock)(nil),              // 61: mdmproto.VerifyRecoveryLock
-	(*SetAutoAdminPassword)(nil),            // 62: mdmproto.SetAutoAdminPassword
-	(*ScheduleOSUpdate)(nil),                // 63: mdmproto.ScheduleOSUpdate
-	(*Update)(nil),                          // 64: mdmproto.Update
-	(*ScheduleOSUpdateScan)(nil),            // 65: mdmproto.ScheduleOSUpdateScan
-	(*ActiveNSExtensions)(nil),              // 66: mdmproto.ActiveNSExtensions
-	(*RotateFileVaultKey)(nil),              // 67: mdmproto.RotateFileVaultKey
-	(*FileVaultUnlock)(nil),                 // 68: mdmproto.FileVaultUnlock
-	(*SetBootstrapToken)(nil),               // 69: mdmproto.SetBootstrapToken
-	(*ResultPayload)(nil),                   // 70: mdmproto.ResultPayload
-	(*ErrorChain)(nil),                      // 71: mdmproto.ErrorChain
-	(*RefreshCellularPlans)(nil),            // 72: mdmproto.RefreshCellularPlans
+	(*LOMDeviceRequest)(nil),                // 36: mdmproto.LOMDeviceRequest
+	(*LOMDeviceRequestCommand)(nil),         // 37: mdmproto.LOMDeviceRequestCommand
+	(*Settings)(nil),                        // 38: mdmproto.Settings
+	(*Setting)(nil),                         // 39: mdmproto.Setting
+	(*VoiceRoamingSetting)(nil),             // 40: mdmproto.VoiceRoamingSetting
+	(*PersonalHotspotSetting)(nil),          // 41: mdmproto.PersonalHotspotSetting
+	(*WallpaperSetting)(nil),                // 42: mdmproto.WallpaperSetting
+	(*DataRoamingSetting)(nil),              // 43: mdmproto.DataRoamingSetting
+	(*BluetoothSetting)(nil),                // 44: mdmproto.BluetoothSetting
+	(*ApplicationAttributesSetting)(nil),    // 45: mdmproto.ApplicationAttributesSetting
+	(*ApplicationConfigurationSetting)(nil), // 46: mdmproto.ApplicationConfigurationSetting
+	(*ApplicationAttributes)(nil),           // 47: mdmproto.ApplicationAttributes
+	(*DeviceNameSetting)(nil),               // 48: mdmproto.DeviceNameSetting
+	(*TimeZoneSetting)(nil),                 // 49: mdmproto.TimeZoneSetting
+	(*HostnameSetting)(nil),                 // 50: mdmproto.HostnameSetting
+	(*MDMOptionsSetting)(nil),               // 51: mdmproto.MDMOptionsSetting
+	(*MDMOptions)(nil),                      // 52: mdmproto.MDMOptions
+	(*PasscodeLockGracePeriodSetting)(nil),  // 53: mdmproto.PasscodeLockGracePeriodSetting
+	(*MaximumResidentUsersSetting)(nil),     // 54: mdmproto.MaximumResidentUsersSetting
+	(*DiagnosticSubmissionSetting)(nil),     // 55: mdmproto.DiagnosticSubmissionSetting
+	(*AppAnalyticsSetting)(nil),             // 56: mdmproto.AppAnalyticsSetting
+	(*ManagedApplicationConfiguration)(nil), // 57: mdmproto.ManagedApplicationConfiguration
+	(*ManagedApplicationAttributes)(nil),    // 58: mdmproto.ManagedApplicationAttributes
+	(*ManagedApplicationFeedback)(nil),      // 59: mdmproto.ManagedApplicationFeedback
+	(*SetFirmwarePassword)(nil),             // 60: mdmproto.SetFirmwarePassword
+	(*VerifyFirmwarePassword)(nil),          // 61: mdmproto.VerifyFirmwarePassword
+	(*SetRecoveryLock)(nil),                 // 62: mdmproto.SetRecoveryLock
+	(*VerifyRecoveryLock)(nil),              // 63: mdmproto.VerifyRecoveryLock
+	(*SetAutoAdminPassword)(nil),            // 64: mdmproto.SetAutoAdminPassword
+	(*ScheduleOSUpdate)(nil),                // 65: mdmproto.ScheduleOSUpdate
+	(*Update)(nil),                          // 66: mdmproto.Update
+	(*ScheduleOSUpdateScan)(nil),            // 67: mdmproto.ScheduleOSUpdateScan
+	(*ActiveNSExtensions)(nil),              // 68: mdmproto.ActiveNSExtensions
+	(*RotateFileVaultKey)(nil),              // 69: mdmproto.RotateFileVaultKey
+	(*FileVaultUnlock)(nil),                 // 70: mdmproto.FileVaultUnlock
+	(*SetBootstrapToken)(nil),               // 71: mdmproto.SetBootstrapToken
+	(*ResultPayload)(nil),                   // 72: mdmproto.ResultPayload
+	(*ErrorChain)(nil),                      // 73: mdmproto.ErrorChain
+	(*RefreshCellularPlans)(nil),            // 74: mdmproto.RefreshCellularPlans
 }
 var file_mdm_proto_depIdxs = []int32{
 	2,  // 0: mdmproto.CommandPayload.command:type_name -> mdmproto.Command
@@ -5636,57 +5819,59 @@ var file_mdm_proto_depIdxs = []int32{
 	31, // 21: mdmproto.Command.validata_applications:type_name -> mdmproto.ValidateApplications
 	34, // 22: mdmproto.Command.install_media:type_name -> mdmproto.InstallMedia
 	35, // 23: mdmproto.Command.remove_media:type_name -> mdmproto.RemoveMedia
-	36, // 24: mdmproto.Command.settings:type_name -> mdmproto.Settings
-	55, // 25: mdmproto.Command.managed_application_configuration:type_name -> mdmproto.ManagedApplicationConfiguration
-	56, // 26: mdmproto.Command.managed_application_attributes:type_name -> mdmproto.ManagedApplicationAttributes
-	57, // 27: mdmproto.Command.managed_application_feedback:type_name -> mdmproto.ManagedApplicationFeedback
-	58, // 28: mdmproto.Command.set_firmware_password:type_name -> mdmproto.SetFirmwarePassword
-	59, // 29: mdmproto.Command.verify_firmware_password:type_name -> mdmproto.VerifyFirmwarePassword
-	62, // 30: mdmproto.Command.set_auto_admin_password:type_name -> mdmproto.SetAutoAdminPassword
-	63, // 31: mdmproto.Command.schedule_os_update:type_name -> mdmproto.ScheduleOSUpdate
-	65, // 32: mdmproto.Command.schedule_os_update_scan:type_name -> mdmproto.ScheduleOSUpdateScan
-	66, // 33: mdmproto.Command.active_ns_extensions:type_name -> mdmproto.ActiveNSExtensions
-	67, // 34: mdmproto.Command.rotate_filevault_key:type_name -> mdmproto.RotateFileVaultKey
+	38, // 24: mdmproto.Command.settings:type_name -> mdmproto.Settings
+	57, // 25: mdmproto.Command.managed_application_configuration:type_name -> mdmproto.ManagedApplicationConfiguration
+	58, // 26: mdmproto.Command.managed_application_attributes:type_name -> mdmproto.ManagedApplicationAttributes
+	59, // 27: mdmproto.Command.managed_application_feedback:type_name -> mdmproto.ManagedApplicationFeedback
+	60, // 28: mdmproto.Command.set_firmware_password:type_name -> mdmproto.SetFirmwarePassword
+	61, // 29: mdmproto.Command.verify_firmware_password:type_name -> mdmproto.VerifyFirmwarePassword
+	64, // 30: mdmproto.Command.set_auto_admin_password:type_name -> mdmproto.SetAutoAdminPassword
+	65, // 31: mdmproto.Command.schedule_os_update:type_name -> mdmproto.ScheduleOSUpdate
+	67, // 32: mdmproto.Command.schedule_os_update_scan:type_name -> mdmproto.ScheduleOSUpdateScan
+	68, // 33: mdmproto.Command.active_ns_extensions:type_name -> mdmproto.ActiveNSExtensions
+	69, // 34: mdmproto.Command.rotate_filevault_key:type_name -> mdmproto.RotateFileVaultKey
 	21, // 35: mdmproto.Command.install_enterprise_application:type_name -> mdmproto.InstallEnterpriseApplication
-	69, // 36: mdmproto.Command.set_bootstrap_token:type_name -> mdmproto.SetBootstrapToken
-	60, // 37: mdmproto.Command.set_recovery_lock:type_name -> mdmproto.SetRecoveryLock
-	61, // 38: mdmproto.Command.verify_recovery_lock:type_name -> mdmproto.VerifyRecoveryLock
-	72, // 39: mdmproto.Command.refresh_cellular_plans:type_name -> mdmproto.RefreshCellularPlans
-	18, // 40: mdmproto.InstallApplication.options:type_name -> mdmproto.InstallApplicationOptions
-	19, // 41: mdmproto.InstallApplication.configuration:type_name -> mdmproto.InstallApplicationConfiguration
-	20, // 42: mdmproto.InstallApplication.attributes:type_name -> mdmproto.InstallApplicationAttributes
-	22, // 43: mdmproto.InstallEnterpriseApplication.manifest:type_name -> mdmproto.Manifest
-	23, // 44: mdmproto.Manifest.manifest_items:type_name -> mdmproto.ManifestItem
-	24, // 45: mdmproto.ManifestItem.assets:type_name -> mdmproto.Asset
-	25, // 46: mdmproto.ManifestItem.metadata:type_name -> mdmproto.Metadata
-	26, // 47: mdmproto.Metadata.items:type_name -> mdmproto.BundleInfo
-	33, // 48: mdmproto.AccountConfiguration.auto_setup_admin_accounts:type_name -> mdmproto.AutoSetupAdminAccounts
-	37, // 49: mdmproto.Settings.settings:type_name -> mdmproto.Setting
-	46, // 50: mdmproto.Setting.device_name:type_name -> mdmproto.DeviceNameSetting
-	48, // 51: mdmproto.Setting.hostname:type_name -> mdmproto.HostnameSetting
-	38, // 52: mdmproto.Setting.voice_roaming:type_name -> mdmproto.VoiceRoamingSetting
-	39, // 53: mdmproto.Setting.personal_hotspot:type_name -> mdmproto.PersonalHotspotSetting
-	40, // 54: mdmproto.Setting.wallpaper:type_name -> mdmproto.WallpaperSetting
-	41, // 55: mdmproto.Setting.data_roaming:type_name -> mdmproto.DataRoamingSetting
-	42, // 56: mdmproto.Setting.bluetooth:type_name -> mdmproto.BluetoothSetting
-	43, // 57: mdmproto.Setting.application_attributes:type_name -> mdmproto.ApplicationAttributesSetting
-	49, // 58: mdmproto.Setting.mdm_options:type_name -> mdmproto.MDMOptionsSetting
-	51, // 59: mdmproto.Setting.passcode_lock_grace_period:type_name -> mdmproto.PasscodeLockGracePeriodSetting
-	52, // 60: mdmproto.Setting.maximum_resident_users:type_name -> mdmproto.MaximumResidentUsersSetting
-	53, // 61: mdmproto.Setting.diagnostic_submission:type_name -> mdmproto.DiagnosticSubmissionSetting
-	54, // 62: mdmproto.Setting.app_analytics:type_name -> mdmproto.AppAnalyticsSetting
-	44, // 63: mdmproto.Setting.application_configuration:type_name -> mdmproto.ApplicationConfigurationSetting
-	47, // 64: mdmproto.Setting.time_zone:type_name -> mdmproto.TimeZoneSetting
-	45, // 65: mdmproto.ApplicationAttributesSetting.application_attributes:type_name -> mdmproto.ApplicationAttributes
-	50, // 66: mdmproto.MDMOptionsSetting.mdm_options:type_name -> mdmproto.MDMOptions
-	64, // 67: mdmproto.ScheduleOSUpdate.updates:type_name -> mdmproto.Update
-	68, // 68: mdmproto.RotateFileVaultKey.filevault_unlock:type_name -> mdmproto.FileVaultUnlock
-	71, // 69: mdmproto.ResultPayload.error_chain:type_name -> mdmproto.ErrorChain
-	70, // [70:70] is the sub-list for method output_type
-	70, // [70:70] is the sub-list for method input_type
-	70, // [70:70] is the sub-list for extension type_name
-	70, // [70:70] is the sub-list for extension extendee
-	0,  // [0:70] is the sub-list for field type_name
+	71, // 36: mdmproto.Command.set_bootstrap_token:type_name -> mdmproto.SetBootstrapToken
+	62, // 37: mdmproto.Command.set_recovery_lock:type_name -> mdmproto.SetRecoveryLock
+	63, // 38: mdmproto.Command.verify_recovery_lock:type_name -> mdmproto.VerifyRecoveryLock
+	74, // 39: mdmproto.Command.refresh_cellular_plans:type_name -> mdmproto.RefreshCellularPlans
+	36, // 40: mdmproto.Command.lomDeviceRequestCommand:type_name -> mdmproto.LOMDeviceRequest
+	18, // 41: mdmproto.InstallApplication.options:type_name -> mdmproto.InstallApplicationOptions
+	19, // 42: mdmproto.InstallApplication.configuration:type_name -> mdmproto.InstallApplicationConfiguration
+	20, // 43: mdmproto.InstallApplication.attributes:type_name -> mdmproto.InstallApplicationAttributes
+	22, // 44: mdmproto.InstallEnterpriseApplication.manifest:type_name -> mdmproto.Manifest
+	23, // 45: mdmproto.Manifest.manifest_items:type_name -> mdmproto.ManifestItem
+	24, // 46: mdmproto.ManifestItem.assets:type_name -> mdmproto.Asset
+	25, // 47: mdmproto.ManifestItem.metadata:type_name -> mdmproto.Metadata
+	26, // 48: mdmproto.Metadata.items:type_name -> mdmproto.BundleInfo
+	33, // 49: mdmproto.AccountConfiguration.auto_setup_admin_accounts:type_name -> mdmproto.AutoSetupAdminAccounts
+	37, // 50: mdmproto.LOMDeviceRequest.requestList:type_name -> mdmproto.LOMDeviceRequestCommand
+	39, // 51: mdmproto.Settings.settings:type_name -> mdmproto.Setting
+	48, // 52: mdmproto.Setting.device_name:type_name -> mdmproto.DeviceNameSetting
+	50, // 53: mdmproto.Setting.hostname:type_name -> mdmproto.HostnameSetting
+	40, // 54: mdmproto.Setting.voice_roaming:type_name -> mdmproto.VoiceRoamingSetting
+	41, // 55: mdmproto.Setting.personal_hotspot:type_name -> mdmproto.PersonalHotspotSetting
+	42, // 56: mdmproto.Setting.wallpaper:type_name -> mdmproto.WallpaperSetting
+	43, // 57: mdmproto.Setting.data_roaming:type_name -> mdmproto.DataRoamingSetting
+	44, // 58: mdmproto.Setting.bluetooth:type_name -> mdmproto.BluetoothSetting
+	45, // 59: mdmproto.Setting.application_attributes:type_name -> mdmproto.ApplicationAttributesSetting
+	51, // 60: mdmproto.Setting.mdm_options:type_name -> mdmproto.MDMOptionsSetting
+	53, // 61: mdmproto.Setting.passcode_lock_grace_period:type_name -> mdmproto.PasscodeLockGracePeriodSetting
+	54, // 62: mdmproto.Setting.maximum_resident_users:type_name -> mdmproto.MaximumResidentUsersSetting
+	55, // 63: mdmproto.Setting.diagnostic_submission:type_name -> mdmproto.DiagnosticSubmissionSetting
+	56, // 64: mdmproto.Setting.app_analytics:type_name -> mdmproto.AppAnalyticsSetting
+	46, // 65: mdmproto.Setting.application_configuration:type_name -> mdmproto.ApplicationConfigurationSetting
+	49, // 66: mdmproto.Setting.time_zone:type_name -> mdmproto.TimeZoneSetting
+	47, // 67: mdmproto.ApplicationAttributesSetting.application_attributes:type_name -> mdmproto.ApplicationAttributes
+	52, // 68: mdmproto.MDMOptionsSetting.mdm_options:type_name -> mdmproto.MDMOptions
+	66, // 69: mdmproto.ScheduleOSUpdate.updates:type_name -> mdmproto.Update
+	70, // 70: mdmproto.RotateFileVaultKey.filevault_unlock:type_name -> mdmproto.FileVaultUnlock
+	73, // 71: mdmproto.ResultPayload.error_chain:type_name -> mdmproto.ErrorChain
+	72, // [72:72] is the sub-list for method output_type
+	72, // [72:72] is the sub-list for method input_type
+	72, // [72:72] is the sub-list for extension type_name
+	72, // [72:72] is the sub-list for extension extendee
+	0,  // [0:72] is the sub-list for field type_name
 }
 
 func init() { file_mdm_proto_init() }
@@ -6116,7 +6301,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Settings); i {
+			switch v := v.(*LOMDeviceRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6128,7 +6313,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Setting); i {
+			switch v := v.(*LOMDeviceRequestCommand); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6140,7 +6325,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*VoiceRoamingSetting); i {
+			switch v := v.(*Settings); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6152,7 +6337,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PersonalHotspotSetting); i {
+			switch v := v.(*Setting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6164,7 +6349,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WallpaperSetting); i {
+			switch v := v.(*VoiceRoamingSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6176,7 +6361,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DataRoamingSetting); i {
+			switch v := v.(*PersonalHotspotSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6188,7 +6373,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BluetoothSetting); i {
+			switch v := v.(*WallpaperSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6200,7 +6385,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ApplicationAttributesSetting); i {
+			switch v := v.(*DataRoamingSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6212,7 +6397,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ApplicationConfigurationSetting); i {
+			switch v := v.(*BluetoothSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6224,7 +6409,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ApplicationAttributes); i {
+			switch v := v.(*ApplicationAttributesSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6236,7 +6421,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeviceNameSetting); i {
+			switch v := v.(*ApplicationConfigurationSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6248,7 +6433,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TimeZoneSetting); i {
+			switch v := v.(*ApplicationAttributes); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6260,7 +6445,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HostnameSetting); i {
+			switch v := v.(*DeviceNameSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6272,7 +6457,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MDMOptionsSetting); i {
+			switch v := v.(*TimeZoneSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6284,7 +6469,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MDMOptions); i {
+			switch v := v.(*HostnameSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6296,7 +6481,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PasscodeLockGracePeriodSetting); i {
+			switch v := v.(*MDMOptionsSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6308,7 +6493,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MaximumResidentUsersSetting); i {
+			switch v := v.(*MDMOptions); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6320,7 +6505,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DiagnosticSubmissionSetting); i {
+			switch v := v.(*PasscodeLockGracePeriodSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6332,7 +6517,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AppAnalyticsSetting); i {
+			switch v := v.(*MaximumResidentUsersSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6344,7 +6529,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ManagedApplicationConfiguration); i {
+			switch v := v.(*DiagnosticSubmissionSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6356,7 +6541,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ManagedApplicationAttributes); i {
+			switch v := v.(*AppAnalyticsSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6368,7 +6553,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ManagedApplicationFeedback); i {
+			switch v := v.(*ManagedApplicationConfiguration); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6380,7 +6565,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetFirmwarePassword); i {
+			switch v := v.(*ManagedApplicationAttributes); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6392,7 +6577,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*VerifyFirmwarePassword); i {
+			switch v := v.(*ManagedApplicationFeedback); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6404,7 +6589,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetRecoveryLock); i {
+			switch v := v.(*SetFirmwarePassword); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6416,7 +6601,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*VerifyRecoveryLock); i {
+			switch v := v.(*VerifyFirmwarePassword); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6428,7 +6613,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetAutoAdminPassword); i {
+			switch v := v.(*SetRecoveryLock); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6440,7 +6625,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ScheduleOSUpdate); i {
+			switch v := v.(*VerifyRecoveryLock); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6452,7 +6637,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Update); i {
+			switch v := v.(*SetAutoAdminPassword); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6464,7 +6649,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ScheduleOSUpdateScan); i {
+			switch v := v.(*ScheduleOSUpdate); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6476,7 +6661,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ActiveNSExtensions); i {
+			switch v := v.(*Update); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6488,7 +6673,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RotateFileVaultKey); i {
+			switch v := v.(*ScheduleOSUpdateScan); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6500,7 +6685,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FileVaultUnlock); i {
+			switch v := v.(*ActiveNSExtensions); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6512,7 +6697,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetBootstrapToken); i {
+			switch v := v.(*RotateFileVaultKey); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6524,7 +6709,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ResultPayload); i {
+			switch v := v.(*FileVaultUnlock); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6536,7 +6721,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ErrorChain); i {
+			switch v := v.(*SetBootstrapToken); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6548,6 +6733,30 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ResultPayload); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_mdm_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ErrorChain); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_mdm_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*RefreshCellularPlans); i {
 			case 0:
 				return &v.state
@@ -6600,6 +6809,7 @@ func file_mdm_proto_init() {
 		(*Command_SetRecoveryLock)(nil),
 		(*Command_VerifyRecoveryLock)(nil),
 		(*Command_RefreshCellularPlans)(nil),
+		(*Command_LomDeviceRequestCommand)(nil),
 	}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
@@ -6607,7 +6817,7 @@ func file_mdm_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_mdm_proto_rawDesc,
 			NumEnums:      1,
-			NumMessages:   72,
+			NumMessages:   74,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
diff --git a/mdm/mdm/internal/mdmproto/mdm.proto b/mdm/mdm/internal/mdmproto/mdm.proto
index 374dc34..c5f4462 100644
--- a/mdm/mdm/internal/mdmproto/mdm.proto
+++ b/mdm/mdm/internal/mdmproto/mdm.proto
@@ -18,6 +18,7 @@ message Command {
      - CertificateList",
      - SecurityInfo
      - RestartDevice
+     - LOMSetupRequest
      - ShutDownDevice
      - StopMirroring
      - ClearRestrictionsPassword
@@ -74,6 +75,7 @@ message Command {
     SetRecoveryLock set_recovery_lock = 38;
     VerifyRecoveryLock verify_recovery_lock = 39;
     RefreshCellularPlans refresh_cellular_plans = 40;
+    LOMDeviceRequest lomDeviceRequestCommand = 41;
   }
 }
 
@@ -256,6 +258,19 @@ message RemoveMedia {
   string persistent_id = 3;
 }
 
+message LOMDeviceRequest {
+  repeated LOMDeviceRequestCommand requestList = 1;
+}
+
+message LOMDeviceRequestCommand {
+  string deviceDNSName = 1;
+	string deviceRequestType = 2;
+	string deviceRequestUUID = 3;
+	int64 lomProtocolVersion = 4;
+	repeated string primaryIPv6AddressList = 5;
+	repeated string secondaryIPv6AddressList = 6;
+}
+
 message Settings {
   repeated Setting settings = 1;
 }
diff --git a/mdm/mdm/marshal_json.go b/mdm/mdm/marshal_json.go
index 34a8ffa..40a4864 100644
--- a/mdm/mdm/marshal_json.go
+++ b/mdm/mdm/marshal_json.go
@@ -12,6 +12,7 @@ func (c *Command) MarshalJSON() ([]byte, error) {
 		"CertificateList",
 		"SecurityInfo",
 		"RestartDevice",
+		"LOMSetupRequest",
 		"ShutDownDevice",
 		"StopMirroring",
 		"ClearRestrictionsPassword",
@@ -250,6 +251,15 @@ func (c *Command) MarshalJSON() ([]byte, error) {
 			RemoveMedia: c.RemoveMedia,
 		}
 		return json.Marshal(&x)
+	case "LOMDeviceRequest":
+		var x = struct {
+			RequestType string `json:"request_type"`
+			*LOMDeviceRequest
+		}{
+			RequestType:      c.RequestType,
+			LOMDeviceRequest: c.LOMDeviceRequest,
+		}
+		return json.Marshal(&x)
 	case "Settings":
 		var x = struct {
 			RequestType string `json:"request_type"`
diff --git a/mdm/mdm/marshal_plist.go b/mdm/mdm/marshal_plist.go
index bed09a4..94a60f1 100644
--- a/mdm/mdm/marshal_plist.go
+++ b/mdm/mdm/marshal_plist.go
@@ -14,6 +14,7 @@ func (c *Command) MarshalPlist() (interface{}, error) {
 		"CertificateList",
 		"SecurityInfo",
 		"RestartDevice",
+		"LOMSetupRequest",
 		"ShutDownDevice",
 		"StopMirroring",
 		"ClearRestrictionsPassword",
@@ -228,6 +229,14 @@ func (c *Command) MarshalPlist() (interface{}, error) {
 			RequestType: c.RequestType,
 			RemoveMedia: c.RemoveMedia,
 		}, nil
+	case "LOMDeviceRequest":
+		return &struct {
+			RequestType string
+			*LOMDeviceRequest
+		}{
+			RequestType:      c.RequestType,
+			LOMDeviceRequest: c.LOMDeviceRequest,
+		}, nil
 	case "Settings":
 		// convert all the data plists into the dictionary inside settings before serialization.
 		for i, set := range c.Settings.Settings {
diff --git a/mdm/mdm/marshal_proto.go b/mdm/mdm/marshal_proto.go
index e8de230..2422499 100644
--- a/mdm/mdm/marshal_proto.go
+++ b/mdm/mdm/marshal_proto.go
@@ -31,6 +31,7 @@ func commandToProto(cmd *Command) (*mdmproto.Command, error) {
 		"CertificateList",
 		"SecurityInfo",
 		"RestartDevice",
+		"LOMSetupRequest",
 		"ShutDownDevice",
 		"StopMirroring",
 		"ClearRestrictionsPassword",
@@ -297,6 +298,24 @@ func commandToProto(cmd *Command) (*mdmproto.Command, error) {
 				PersistentId:  cmd.RemoveMedia.PersistentID,
 			},
 		}
+	case "LOMDeviceRequest":
+		var requestList []*mdmproto.LOMDeviceRequestCommand
+		for _, r := range cmd.LOMDeviceRequest.RequestList {
+			requestList = append(requestList, &mdmproto.LOMDeviceRequestCommand{
+				DeviceDNSName:            r.DeviceDNSName,
+				DeviceRequestType:        r.DeviceRequestType,
+				DeviceRequestUUID:        r.DeviceRequestUUID,
+				LomProtocolVersion:       int64(r.LOMProtocolVersion),
+				PrimaryIPv6AddressList:   r.PrimaryIPv6AddressList,
+				SecondaryIPv6AddressList: r.SecondaryIPv6AddressList,
+			})
+		}
+
+		cmdproto.Request = &mdmproto.Command_LomDeviceRequestCommand{
+			LomDeviceRequestCommand: &mdmproto.LOMDeviceRequest{
+				RequestList: requestList,
+			},
+		}
 	case "Settings":
 		var settings []*mdmproto.Setting
 		for _, s := range cmd.Settings.Settings {
diff --git a/mdm/mdm/unmarshal_json.go b/mdm/mdm/unmarshal_json.go
index dc25cac..db142b7 100644
--- a/mdm/mdm/unmarshal_json.go
+++ b/mdm/mdm/unmarshal_json.go
@@ -37,6 +37,7 @@ func (c *Command) UnmarshalJSON(data []byte) error {
 		"CertificateList",
 		"SecurityInfo",
 		"RestartDevice",
+		"LOMSetupRequest",
 		"ShutDownDevice",
 		"StopMirroring",
 		"ClearRestrictionsPassword",
@@ -222,6 +223,13 @@ func (c *Command) UnmarshalJSON(data []byte) error {
 		}
 		c.RemoveMedia = &payload
 		return nil
+	case "LOMDeviceRequest":
+		var payload LOMDeviceRequest
+		if err := json.Unmarshal(data, &payload); err != nil {
+			return errors.Wrapf(err, "mdm: unmarshal %s command json", c.RequestType)
+		}
+		c.LOMDeviceRequest = &payload
+		return nil
 	case "Settings":
 		var payload Settings
 		if err := json.Unmarshal(data, &payload); err != nil {
diff --git a/mdm/mdm/unmarshal_plist.go b/mdm/mdm/unmarshal_plist.go
index 9c40d78..3d116af 100644
--- a/mdm/mdm/unmarshal_plist.go
+++ b/mdm/mdm/unmarshal_plist.go
@@ -21,6 +21,7 @@ func (c *Command) UnmarshalPlist(unmarshal func(i interface{}) error) error {
 		"CertificateList",
 		"SecurityInfo",
 		"RestartDevice",
+		"LOMSetupRequest",
 		"ShutDownDevice",
 		"StopMirroring",
 		"ClearRestrictionsPassword",
@@ -206,6 +207,13 @@ func (c *Command) UnmarshalPlist(unmarshal func(i interface{}) error) error {
 		}
 		c.RemoveMedia = &payload
 		return nil
+	case "LOMDeviceRequest":
+		var payload LOMDeviceRequest
+		if err := unmarshal(&payload); err != nil {
+			return errors.Wrapf(err, "mdm: unmarshal %s command plist", requestType.RequestType)
+		}
+		c.LOMDeviceRequest = &payload
+		return nil
 	case "Settings":
 		var payload Settings
 		if err := unmarshal(&payload); err != nil {
diff --git a/mdm/mdm/unmarshal_proto.go b/mdm/mdm/unmarshal_proto.go
index 1b55df9..f64c579 100644
--- a/mdm/mdm/unmarshal_proto.go
+++ b/mdm/mdm/unmarshal_proto.go
@@ -17,6 +17,7 @@ func protoToCommand(pb *mdmproto.Command) *Command {
 		"CertificateList",
 		"SecurityInfo",
 		"RestartDevice",
+		"LOMSetupRequest",
 		"ShutDownDevice",
 		"StopMirroring",
 		"ClearRestrictionsPassword",
@@ -269,6 +270,22 @@ func protoToCommand(pb *mdmproto.Command) *Command {
 			MediaType:     pbc.GetMediaType(),
 			PersistentID:  pbc.GetPersistentId(),
 		}
+	case "LOMDeviceRequest":
+		pbc := pb.GetLomDeviceRequestCommand()
+		var requestList []LOMDeviceRequestCommand
+		for _, r := range pbc.GetRequestList() {
+			requestList = append(requestList, LOMDeviceRequestCommand{
+				DeviceDNSName:            r.GetDeviceDNSName(),
+				DeviceRequestType:        r.GetDeviceRequestType(),
+				DeviceRequestUUID:        r.GetDeviceRequestUUID(),
+				LOMProtocolVersion:       int(r.GetLomProtocolVersion()),
+				PrimaryIPv6AddressList:   r.GetPrimaryIPv6AddressList(),
+				SecondaryIPv6AddressList: r.GetSecondaryIPv6AddressList(),
+			})
+		}
+		cmd.LOMDeviceRequest = &LOMDeviceRequest{
+			RequestList: requestList,
+		}
 	case "Settings":
 		pbc := pb.GetSettings()
 		var settings []Setting
diff --git a/platform/apns/internal/pushproto/push.pb.go b/platform/apns/internal/pushproto/push.pb.go
index 3399a6e..0ad2a91 100644
--- a/platform/apns/internal/pushproto/push.pb.go
+++ b/platform/apns/internal/pushproto/push.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: push.proto
 
 package pushproto
diff --git a/platform/blueprint/internal/blueprintproto/blueprint.pb.go b/platform/blueprint/internal/blueprintproto/blueprint.pb.go
index 7453899..7819ea1 100644
--- a/platform/blueprint/internal/blueprintproto/blueprint.pb.go
+++ b/platform/blueprint/internal/blueprintproto/blueprint.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: blueprint.proto
 
 package blueprintproto
diff --git a/platform/command/internal/commandproto/command.pb.go b/platform/command/internal/commandproto/command.pb.go
index a5ef95e..1fbb687 100644
--- a/platform/command/internal/commandproto/command.pb.go
+++ b/platform/command/internal/commandproto/command.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: command.proto
 
 package commandproto
diff --git a/platform/config/internal/configproto/config.pb.go b/platform/config/internal/configproto/config.pb.go
index 429b265..5e04af1 100644
--- a/platform/config/internal/configproto/config.pb.go
+++ b/platform/config/internal/configproto/config.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: config.proto
 
 package configproto
diff --git a/platform/dep/sync/internal/depsyncproto/depsync.pb.go b/platform/dep/sync/internal/depsyncproto/depsync.pb.go
index 785fab0..a8f784a 100644
--- a/platform/dep/sync/internal/depsyncproto/depsync.pb.go
+++ b/platform/dep/sync/internal/depsyncproto/depsync.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: depsync.proto
 
 package depsyncproto
diff --git a/platform/device/internal/deviceproto/device.pb.go b/platform/device/internal/deviceproto/device.pb.go
index f929d1f..dd0cdf3 100644
--- a/platform/device/internal/deviceproto/device.pb.go
+++ b/platform/device/internal/deviceproto/device.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: device.proto
 
 package deviceproto
diff --git a/platform/profile/internal/profileproto/profile.pb.go b/platform/profile/internal/profileproto/profile.pb.go
index fba16f0..92fb8b1 100644
--- a/platform/profile/internal/profileproto/profile.pb.go
+++ b/platform/profile/internal/profileproto/profile.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: profile.proto
 
 package profileproto
diff --git a/platform/queue/internal/devicecommandproto/device_command.pb.go b/platform/queue/internal/devicecommandproto/device_command.pb.go
index 400f723..62643dd 100644
--- a/platform/queue/internal/devicecommandproto/device_command.pb.go
+++ b/platform/queue/internal/devicecommandproto/device_command.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: device_command.proto
 
 package devicecommandproto
diff --git a/platform/remove/internal/removeproto/remove.pb.go b/platform/remove/internal/removeproto/remove.pb.go
index eee4a80..c4308b2 100644
--- a/platform/remove/internal/removeproto/remove.pb.go
+++ b/platform/remove/internal/removeproto/remove.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: remove.proto
 
 package removeproto
diff --git a/platform/user/internal/userproto/user.pb.go b/platform/user/internal/userproto/user.pb.go
index 27a3eec..16a9dd5 100644
--- a/platform/user/internal/userproto/user.pb.go
+++ b/platform/user/internal/userproto/user.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.18.1
+// 	protoc-gen-go v1.28.0
+// 	protoc        v3.21.2
 // source: user.proto
 
 package userproto
diff --git a/tools/api/commands/lom_reset b/tools/api/commands/lom_reset
new file mode 100644
index 0000000..0a41a73
--- /dev/null
+++ b/tools/api/commands/lom_reset
@@ -0,0 +1,33 @@
+#!/bin/bash
+source $MICROMDM_ENV_PATH
+endpoint="v1/commands"
+
+# apple documentation https://developer.apple.com/documentation/devicemanagement/lomdevicerequestcommand/command/requestlistitem
+
+requestUuid=$(cat /proc/sys/kernel/random/uuid)
+requestUuid=${requestUuid^^}
+
+jq -n \
+  --arg request_type "LOMDeviceRequest" \
+  --arg udid "$1" \
+  --arg requestUuid "$requestUuid" \
+  --arg deviceDnsName "$2" \
+  --arg deviceIpV6 "$3" \
+ '.udid = $udid 
+  |.request_type = $request_type
+  |.request_list = [
+    {
+      "device_dns_name": $deviceDnsName,
+      "device_request_type": "Reset",
+      "device_request_uuid": $requestUuid,
+      "lom_protocol_version": 1,
+      "primary_ip_v6_address_list": [
+        $deviceIpV6
+      ],
+      "secondary_ip_v6_address_list": [
+        
+      ]
+    }
+  ]
+  '| \
+  curl $CURL_OPTS -K <(cat <<< "-u micromdm:$API_TOKEN") "$SERVER_URL/$endpoint" -d@-


Test patch:
diff --git a/mdm/mdm/mdm_command_test.go b/mdm/mdm/mdm_command_test.go
index 77a315b..3f31e8e 100644
--- a/mdm/mdm/mdm_command_test.go
+++ b/mdm/mdm/mdm_command_test.go
@@ -146,6 +146,27 @@ func TestMarshalCommand(t *testing.T) {
 				},
 			},
 		},
+		{
+			Command: Command{
+				RequestType: "LOMDeviceRequest",
+				LOMDeviceRequest: &LOMDeviceRequest{
+					RequestList: []LOMDeviceRequestCommand{
+						{
+							DeviceDNSName:      "dns.name",
+							DeviceRequestType:  "request.type",
+							DeviceRequestUUID:  "uuid",
+							LOMProtocolVersion: 1356382,
+							PrimaryIPv6AddressList: []string{
+								"2fb2:244a:d925:ddf6:8a28:1a52:b0e2:ea62",
+							},
+							SecondaryIPv6AddressList: []string{
+								"2fb2:244a:d925:ddf6:8a28:1a52:b0e2:ea63",
+							},
+						},
+					},
+				},
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.Command.RequestType+"_json", func(t *testing.T) {
@@ -525,6 +546,33 @@ func TestEndToEnd(t *testing.T) {
 				}
 			},
 		},
+		{
+			name: "LOMDeviceRequest",
+			requestBytes: []byte(
+				`{"udid":"controllerUid","request_type":"LOMDeviceRequest","request_list":[{"device_dns_name":"deviceDnsName","device_request_type":"Reset","device_request_uuid":"B97F3491-E5E9-40D4-B163-36C41648CB46","lom_protocol_version":254,"primary_ip_v6_address_list":["primaryIpV6"],"secondary_ip_v6_address_list":["secondaryIpV6"]}]}`,
+			),
+			testFn: func(t *testing.T, parts endToEndParts) {
+				needToSee := [][]byte{
+					[]byte(`LOMDeviceRequest`),
+					[]byte(`deviceDnsName`),
+					[]byte(`Reset`),
+					[]byte(`B97F3491-E5E9-40D4-B163-36C41648CB46`),
+					[]byte(`254`),
+					[]byte(`primaryIpV6`),
+					[]byte(`secondaryIpV6`),
+				}
+
+				for _, b := range needToSee {
+					if !bytes.Contains(parts.plistData, b) {
+						t.Error(fmt.Sprintf("marshaled plist does not contain required bytes: '%s'", string(b)))
+					}
+				}
+
+				if parts.req.UDID != "controllerUid" {
+					t.Error("UDID should be set to request udid")
+				}
+			},
+		},
 	}
 
 	for _, tt := range tests {