Repository: micromdm/micromdm
Pull request #861 (2023-02-07 04:25:15)

Bump github.com/pkg/errors from 0.8.0 to 0.9.1
Bumps [github.com/pkg/errors](https://github.com/pkg/errors) from 0.8.0 to 0.9.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/pkg/errors/releases">github.com/pkg/errors's releases</a>.</em></p>
<blockquote>
<h2>errors 0.9.1</h2>
<p>pkg/errors 0.9.1 is a bug fix release for errors 0.9.0. This restore the previous behaviour on Cause method, this behaviour was changed on the PR: <a href="https://github-redirect.dependabot.com/pkg/errors/issues/215">#215</a> and many breaking changes was produced by that.</p>
<p>errors 0.9.0 is a preparation release for a 1.0 final release. Also we were working on removing support for Go 1.8, 1.9 and 1.10 and earlier, and become compatible this package with new way of errors on Go 1.13.</p>
<p>We tried to move into <code>runtime.CallerFrames</code> but this was not possible, you can show the explanation here: <a href="https://github-redirect.dependabot.com/pkg/errors/issues/188">Issue 188</a>.</p>
<p>The motivation for do the backward compatible this package with Go 1.13 is that you can migrate the easy way for this to the new way.</p>
<p>Now you could use the methods, <code>Is</code> and <code>As</code>, and the <code>Unwrap()</code> interface like on the standard library.</p>
<p>The method <code>Cause</code> is now compatible with <code>fmt.Errorf(&quot;%w&quot;, err)</code> and with the <code>Unwrap()</code> interface.</p>
<p>On the same way the methods related with <code>wrapping</code> on this package now are compatible with <code>Cause</code> and <code>Unwrap()</code> interface.</p>
<h1>Improvements</h1>
<ul>
<li><code>.travis.yml</code> Now use make file.</li>
<li>reduce allocations when printing stack traces. Thanks <a href="https://github.com/cstockton"><code>@​cstockton</code></a></li>
<li>Reduce allocations in Stacktrace.Format</li>
<li>Add Support to Go 1.13. Thanks <a href="https://github.com/jayschwa"><code>@​jayschwa</code></a>, <a href="https://github.com/Sherlock-Holo"><code>@​Sherlock-Holo</code></a> and <a href="https://github.com/puellanivis"><code>@​puellanivis</code></a>.</li>
<li>Add json.Marshaler support to the Frame type. Thanks <a href="https://github.com/flimzy"><code>@​flimzy</code></a></li>
</ul>
<h1>Bugs fixed</h1>
<ul>
<li><code>.travis.yml</code> Adjust Go versions. Thanks <a href="https://github.com/komuw"><code>@​komuw</code></a>, <a href="https://github.com/aperezg"><code>@​aperezg</code></a></li>
<li>minor fix in an example to print Stack Trace. Thanks <a href="https://github.com/bep"><code>@​bep</code></a>.</li>
<li>Remove not necessary code.</li>
<li>Clean up documentation. Thanks <a href="https://github.com/seh"><code>@​seh</code></a>.</li>
</ul>
<h2>errors 0.8.1</h2>
<p>pkg/errors 0.8.1 is a bug fix release for errors 0.8.0. It will be the last version to support Go 1.8 and below. pkg/errors 0.9 and above will require Go 1.9 for the new <code>runtime.CallersFrames</code> API.</p>
<p>pkg/errors 0.8.1 also adds one new feature, <code>errors.WithMessagef</code>. Ideally this would be held over til 0.9, but that complicates the switch to <code>runtime.CallersFrames</code>.</p>
<h1>Improvements</h1>
<ul>
<li>Added <code>errors.WithMessagef</code>. Thanks <a href="https://github.com/chemicL"><code>@​chemicL</code></a>.</li>
</ul>
<h1>Bugs fixed</h1>
<ul>
<li><code>.travis.yml</code>. Adjust Go versions. Thanks <a href="https://github.com/AlekSi"><code>@​AlekSi</code></a>, <a href="https://github.com/dvrkps"><code>@​dvrkps</code></a>, <a href="https://github.com/HaraldNordgren"><code>@​HaraldNordgren</code></a>, and <a href="https://github.com/komuw"><code>@​komuw</code></a></li>
<li>Fixed gofmt. Thanks <a href="https://github.com/tariq1890"><code>@​tariq1890</code></a></li>
<li>Copyedit the package documentation. Thanks <a href="https://github.com/seh"><code>@​seh</code></a>, <a href="https://github.com/TomSweeneyRedHat"><code>@​TomSweeneyRedHat</code></a>, <a href="https://github.com/nicksnyder"><code>@​nicksnyder</code></a>, and <a href="https://github.com/beono"><code>@​beono</code></a></li>
<li>Remove unreachable code. Thanks <a href="https://github.com/philoserf"><code>@​philoserf</code></a> and <a href="https://github.com/haya14busa"><code>@​haya14busa</code></a></li>
<li>Move benchmark error sink to global variable. Thanks <a href="https://github.com/bradleyfalzon"><code>@​bradleyfalzon</code></a></li>
<li>Fix minor newline consistency issues in test files. Thanks <a href="https://github.com/nmiyake"><code>@​nmiyake</code></a></li>
<li>Add doc comment for exported Format func. Thanks <a href="https://github.com/mrhwick"><code>@​mrhwick</code></a> and <a href="https://github.com/ihrwein"><code>@​ihrwein</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pkg/errors/commit/614d223910a179a466c1767a985424175c39b465"><code>614d223</code></a> Revert &quot;Support Go 1.13 error chains in <code>Cause</code> (<a href="https://github-redirect.dependabot.com/pkg/errors/issues/215">#215</a>)&quot; (<a href="https://github-redirect.dependabot.com/pkg/errors/issues/220">#220</a>)</li>
<li><a href="https://github.com/pkg/errors/commit/49f8f617296114c890ae0b7ac18c5953d2b1ca0f"><code>49f8f61</code></a> Support Go 1.13 error chains in <code>Cause</code> (<a href="https://github-redirect.dependabot.com/pkg/errors/issues/215">#215</a>)</li>
<li><a href="https://github.com/pkg/errors/commit/004deef56200d8bd57ebfd6f8734c08fbd003f6d"><code>004deef</code></a> remove unnecessary use of fmt.Sprintf (<a href="https://github-redirect.dependabot.com/pkg/errors/issues/217">#217</a>)</li>
<li><a href="https://github.com/pkg/errors/commit/6d954f502eb89cd315e4baae5b0e0db516d6f787"><code>6d954f5</code></a> feat: support std errors functions (<a href="https://github-redirect.dependabot.com/pkg/errors/issues/213">#213</a>)</li>
<li><a href="https://github.com/pkg/errors/commit/7f95ac13edff643b8ce5398b6ccab125f8a20c1a"><code>7f95ac1</code></a> Add support for Go 1.13 error chains (<a href="https://github-redirect.dependabot.com/pkg/errors/issues/206">#206</a>)</li>
<li><a href="https://github.com/pkg/errors/commit/91f169312d9bf0c7709dc198651b9505ba85a239"><code>91f1693</code></a> travis.yml: add Go 1.13</li>
<li><a href="https://github.com/pkg/errors/commit/ca0248e19befb8f46baae51a5a9951dd47740db5"><code>ca0248e</code></a> fix travis, 1.10 doesnt support by unconvert anymore</li>
<li><a href="https://github.com/pkg/errors/commit/27936f6d90f9c8e1145f11ed52ffffbfdb9e0af7"><code>27936f6</code></a> travis.yml: add Go 1.12 (<a href="https://github-redirect.dependabot.com/pkg/errors/issues/200">#200</a>)</li>
<li><a href="https://github.com/pkg/errors/commit/856c240a51a2bf8fb8269ea7f3f9b046aadde36e"><code>856c240</code></a> Add json.Marshaler support to the Frame type. (<a href="https://github-redirect.dependabot.com/pkg/errors/issues/197">#197</a>)</li>
<li><a href="https://github.com/pkg/errors/commit/ffb6e22f01932bf7ac35e0bad9be11f01d1c8685"><code>ffb6e22</code></a> Reduce allocations in StackTrace.Format (<a href="https://github-redirect.dependabot.com/pkg/errors/issues/194">#194</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/pkg/errors/compare/v0.8.0...v0.9.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pkg/errors&package-manager=go_modules&previous-version=0.8.0&new-version=0.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 80d47f1..f1141cb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
 ## [Unreleased](https://github.com/micromdm/micromdm/compare/v1.10.1...main)
 
-This release is eagerly awaiting *your* awesome contribution!
+- Add SoftwareUpdateSettings to Settings command (#771, #856)
 
 ## [v1.10.1](https://github.com/micromdm/micromdm/compare/v1.10.0...v1.10.1) January 24, 2023
 
diff --git a/go.mod b/go.mod
index 20d5c05..c093a7e 100644
--- a/go.mod
+++ b/go.mod
@@ -5,9 +5,9 @@ require (
 	github.com/boltdb/bolt v1.3.1
 	github.com/garyburd/go-oauth v0.0.0-20180319155456-bca2e7f09a17
 	github.com/go-kit/kit v0.7.0
-	github.com/google/uuid v1.1.2
+	github.com/google/uuid v1.3.0
 	github.com/gorilla/handlers v1.5.1
-	github.com/gorilla/mux v1.6.2
+	github.com/gorilla/mux v1.8.0
 	github.com/groob/finalizer v0.0.0-20170707115354-4c2ed49aabda
 	github.com/groob/plist v0.0.0-20220217120414-63fa881b19a5
 	github.com/jessepeterson/cfgprofiles v0.2.0
@@ -17,12 +17,12 @@ require (
 	github.com/lib/pq v1.0.0
 	github.com/micromdm/go4 v0.0.0-20210104222236-8a0936d9e451
 	github.com/micromdm/scep/v2 v2.1.0
-	github.com/pkg/errors v0.8.0
+	github.com/pkg/errors v0.9.1
 	github.com/pressly/goose v2.3.0+incompatible
 	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.28.0
+	google.golang.org/protobuf v1.28.1
 	gopkg.in/Masterminds/squirrel.v1 v1.0.0-20170825200431-a6b93000bd21
 )
 
@@ -32,7 +32,6 @@ require (
 	github.com/go-logfmt/logfmt v0.3.0 // indirect
 	github.com/go-sql-driver/mysql v1.4.0 // indirect
 	github.com/go-stack/stack v1.7.0 // indirect
-	github.com/gorilla/context v1.1.1 // indirect
 	github.com/korylprince/go-cpio-odc v0.9.4 // indirect
 	github.com/korylprince/goxar v0.0.0-20211111233330-e9f257bcdf25 // indirect
 	github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 // indirect
diff --git a/go.sum b/go.sum
index 4a8e729..c128aba 100644
--- a/go.sum
+++ b/go.sum
@@ -24,16 +24,15 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y
 github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
 github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
-github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=
-github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
 github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=
 github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q=
 github.com/gorilla/mux v1.4.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.6.2 h1:Pgr17XVTNXAk3q/r4CpKzC5xBM/qW1uVLV+IhRZpIIk=
-github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
+github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
 github.com/groob/finalizer v0.0.0-20170707115354-4c2ed49aabda h1:5ikpG9mYCMFiZX0nkxoV6aU2IpCHPdws3gCNgdZeEV0=
 github.com/groob/finalizer v0.0.0-20170707115354-4c2ed49aabda/go.mod h1:MyndkAZd5rUMdNogn35MWXBX1UiBigrU8eTj8DoAC2c=
 github.com/groob/plist v0.0.0-20190114192801-a99fbe489d03/go.mod h1:qg2Nek0ND/hIr+nY8H1oVqEW2cLzVVNaAQ0QexOyjyc=
@@ -65,8 +64,9 @@ github.com/micromdm/go4 v0.0.0-20210104222236-8a0936d9e451 h1:xHy+uslAu/WFXOQHqy
 github.com/micromdm/go4 v0.0.0-20210104222236-8a0936d9e451/go.mod h1:uZTekMktf1ayaNK9onByUXwKleUvJNQw/cpZaNkvvRo=
 github.com/micromdm/scep/v2 v2.1.0 h1:2fS9Rla7qRR266hvUoEauBJ7J6FhgssEiq2OkSKXmaU=
 github.com/micromdm/scep/v2 v2.1.0/go.mod h1:BkF7TkPPhmgJAMtHfP+sFTKXmgzNJgLQlvvGoOExBcc=
-github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=
 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pressly/goose v2.3.0+incompatible h1:Nc9o+JsN4j8sS4hvRzcfKYOrr7W2EXMDY2wNYtKmaVc=
@@ -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.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
-google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
+google.golang.org/protobuf v1.28.1/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/mdm/command.go b/mdm/mdm/command.go
index 2d03a49..203616c 100644
--- a/mdm/mdm/command.go
+++ b/mdm/mdm/command.go
@@ -234,6 +234,7 @@ type Setting struct {
 	MDMOptions              map[string]interface{} `plist:",omitempty" json:"mdm_options,omitempty"`
 	PasscodeLockGracePeriod *int                   `plist:",omitempty" json:"passcode_lock_grace_period,omitempty"`
 	MaximumResidentUsers    *int                   `plist:",omitempty" json:"maximum_resident_users,omitempty"`
+	RecommendationCadence   *int                   `plist:",omitempty" json:"recommendation_cadence,omitempty"`
 	Configuration           map[string]interface{} `plist:",omitempty" json:"-"`
 	ConfigurationData       []byte                 `plist:"-" json:"configuration"` // used to build the dictionary
 }
diff --git a/mdm/mdm/internal/mdmproto/mdm.pb.go b/mdm/mdm/internal/mdmproto/mdm.pb.go
index fbf769c..453ba07 100644
--- a/mdm/mdm/internal/mdmproto/mdm.pb.go
+++ b/mdm/mdm/internal/mdmproto/mdm.pb.go
@@ -1,6 +1,6 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.28.0
+// 	protoc-gen-go v1.28.1
 // 	protoc        v3.21.2
 // source: mdm.proto
 
@@ -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{71, 0}
+	return file_mdm_proto_rawDescGZIP(), []int{72, 0}
 }
 
 type CommandPayload struct {
@@ -136,31 +136,31 @@ type Command struct {
 	unknownFields protoimpl.UnknownFields
 
 	RequestType string `protobuf:"bytes,1,opt,name=request_type,json=requestType,proto3" json:"request_type,omitempty"`
-	//
-	//Request Types that do not have additional fields:
-	//- ProfileList
-	//- ProvisioningProfileList
-	//- CertificateList",
-	//- SecurityInfo
-	//- RestartDevice
-	//- LOMSetupRequest
-	//- ShutDownDevice
-	//- StopMirroring
-	//- ClearRestrictionsPassword
-	//- UserList
-	//- LogOutUser
-	//- PlayLostModeSound
-	//- DisableLostMode
-	//- DeviceLocation
-	//- ManagedMediaList
-	//- DeviceConfigured
-	//- AvailableOSUpdates
-	//- NSExtensionMappings
-	//- EnableRemoteDesktop
-	//- DisableRemoteDesktop
-	//- ActivationLockBypassCode
+	// Request Types that do not have additional fields:
+	// - ProfileList
+	// - ProvisioningProfileList
+	// - CertificateList",
+	// - SecurityInfo
+	// - RestartDevice
+	// - LOMSetupRequest
+	// - ShutDownDevice
+	// - StopMirroring
+	// - ClearRestrictionsPassword
+	// - UserList
+	// - LogOutUser
+	// - PlayLostModeSound
+	// - DisableLostMode
+	// - DeviceLocation
+	// - ManagedMediaList
+	// - DeviceConfigured
+	// - AvailableOSUpdates
+	// - NSExtensionMappings
+	// - EnableRemoteDesktop
+	// - DisableRemoteDesktop
+	// - ActivationLockBypassCode
 	//
 	// Types that are assignable to Request:
+	//
 	//	*Command_InstallProfile
 	//	*Command_RemoveProfile
 	//	*Command_InstallProvisioningProfile
@@ -2901,6 +2901,7 @@ type Setting struct {
 	AppAnalytics             *AppAnalyticsSetting             `protobuf:"bytes,14,opt,name=app_analytics,json=appAnalytics,proto3" json:"app_analytics,omitempty"`
 	ApplicationConfiguration *ApplicationConfigurationSetting `protobuf:"bytes,15,opt,name=application_configuration,json=applicationConfiguration,proto3" json:"application_configuration,omitempty"`
 	TimeZone                 *TimeZoneSetting                 `protobuf:"bytes,16,opt,name=time_zone,json=timeZone,proto3" json:"time_zone,omitempty"`
+	SoftwareUpdateSettings   *SoftwareUpdateSettingsSetting   `protobuf:"bytes,17,opt,name=software_update_settings,json=softwareUpdateSettings,proto3" json:"software_update_settings,omitempty"`
 }
 
 func (x *Setting) Reset() {
@@ -3047,6 +3048,13 @@ func (x *Setting) GetTimeZone() *TimeZoneSetting {
 	return nil
 }
 
+func (x *Setting) GetSoftwareUpdateSettings() *SoftwareUpdateSettingsSetting {
+	if x != nil {
+		return x.SoftwareUpdateSettings
+	}
+	return nil
+}
+
 type VoiceRoamingSetting struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -3541,6 +3549,53 @@ func (x *TimeZoneSetting) GetTimeZone() string {
 	return ""
 }
 
+type SoftwareUpdateSettingsSetting struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	RecommendationCadence int64 `protobuf:"varint,1,opt,name=recommendation_cadence,json=recommendationCadence,proto3" json:"recommendation_cadence,omitempty"`
+}
+
+func (x *SoftwareUpdateSettingsSetting) Reset() {
+	*x = SoftwareUpdateSettingsSetting{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_mdm_proto_msgTypes[49]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SoftwareUpdateSettingsSetting) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SoftwareUpdateSettingsSetting) ProtoMessage() {}
+
+func (x *SoftwareUpdateSettingsSetting) ProtoReflect() protoreflect.Message {
+	mi := &file_mdm_proto_msgTypes[49]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SoftwareUpdateSettingsSetting.ProtoReflect.Descriptor instead.
+func (*SoftwareUpdateSettingsSetting) Descriptor() ([]byte, []int) {
+	return file_mdm_proto_rawDescGZIP(), []int{49}
+}
+
+func (x *SoftwareUpdateSettingsSetting) GetRecommendationCadence() int64 {
+	if x != nil {
+		return x.RecommendationCadence
+	}
+	return 0
+}
+
 type HostnameSetting struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -3552,7 +3607,7 @@ type HostnameSetting struct {
 func (x *HostnameSetting) Reset() {
 	*x = HostnameSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[49]
+		mi := &file_mdm_proto_msgTypes[50]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3565,7 +3620,7 @@ func (x *HostnameSetting) String() string {
 func (*HostnameSetting) ProtoMessage() {}
 
 func (x *HostnameSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[49]
+	mi := &file_mdm_proto_msgTypes[50]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3578,7 +3633,7 @@ func (x *HostnameSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use HostnameSetting.ProtoReflect.Descriptor instead.
 func (*HostnameSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{49}
+	return file_mdm_proto_rawDescGZIP(), []int{50}
 }
 
 func (x *HostnameSetting) GetHostname() string {
@@ -3599,7 +3654,7 @@ type MDMOptionsSetting struct {
 func (x *MDMOptionsSetting) Reset() {
 	*x = MDMOptionsSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[50]
+		mi := &file_mdm_proto_msgTypes[51]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3612,7 +3667,7 @@ func (x *MDMOptionsSetting) String() string {
 func (*MDMOptionsSetting) ProtoMessage() {}
 
 func (x *MDMOptionsSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[50]
+	mi := &file_mdm_proto_msgTypes[51]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3625,7 +3680,7 @@ func (x *MDMOptionsSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use MDMOptionsSetting.ProtoReflect.Descriptor instead.
 func (*MDMOptionsSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{50}
+	return file_mdm_proto_rawDescGZIP(), []int{51}
 }
 
 func (x *MDMOptionsSetting) GetMdmOptions() *MDMOptions {
@@ -3648,7 +3703,7 @@ type MDMOptions struct {
 func (x *MDMOptions) Reset() {
 	*x = MDMOptions{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[51]
+		mi := &file_mdm_proto_msgTypes[52]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3661,7 +3716,7 @@ func (x *MDMOptions) String() string {
 func (*MDMOptions) ProtoMessage() {}
 
 func (x *MDMOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[51]
+	mi := &file_mdm_proto_msgTypes[52]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3674,7 +3729,7 @@ func (x *MDMOptions) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use MDMOptions.ProtoReflect.Descriptor instead.
 func (*MDMOptions) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{51}
+	return file_mdm_proto_rawDescGZIP(), []int{52}
 }
 
 func (x *MDMOptions) GetActivationLockAllowedWhileSupervised() bool {
@@ -3709,7 +3764,7 @@ type PasscodeLockGracePeriodSetting struct {
 func (x *PasscodeLockGracePeriodSetting) Reset() {
 	*x = PasscodeLockGracePeriodSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[52]
+		mi := &file_mdm_proto_msgTypes[53]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3722,7 +3777,7 @@ func (x *PasscodeLockGracePeriodSetting) String() string {
 func (*PasscodeLockGracePeriodSetting) ProtoMessage() {}
 
 func (x *PasscodeLockGracePeriodSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[52]
+	mi := &file_mdm_proto_msgTypes[53]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3735,7 +3790,7 @@ func (x *PasscodeLockGracePeriodSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PasscodeLockGracePeriodSetting.ProtoReflect.Descriptor instead.
 func (*PasscodeLockGracePeriodSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{52}
+	return file_mdm_proto_rawDescGZIP(), []int{53}
 }
 
 func (x *PasscodeLockGracePeriodSetting) GetPasscodeLockGracePeriod() int64 {
@@ -3756,7 +3811,7 @@ type MaximumResidentUsersSetting struct {
 func (x *MaximumResidentUsersSetting) Reset() {
 	*x = MaximumResidentUsersSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[53]
+		mi := &file_mdm_proto_msgTypes[54]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3769,7 +3824,7 @@ func (x *MaximumResidentUsersSetting) String() string {
 func (*MaximumResidentUsersSetting) ProtoMessage() {}
 
 func (x *MaximumResidentUsersSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[53]
+	mi := &file_mdm_proto_msgTypes[54]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3782,7 +3837,7 @@ func (x *MaximumResidentUsersSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use MaximumResidentUsersSetting.ProtoReflect.Descriptor instead.
 func (*MaximumResidentUsersSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{53}
+	return file_mdm_proto_rawDescGZIP(), []int{54}
 }
 
 func (x *MaximumResidentUsersSetting) GetMaximumResidentUsers() int64 {
@@ -3803,7 +3858,7 @@ type DiagnosticSubmissionSetting struct {
 func (x *DiagnosticSubmissionSetting) Reset() {
 	*x = DiagnosticSubmissionSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[54]
+		mi := &file_mdm_proto_msgTypes[55]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3816,7 +3871,7 @@ func (x *DiagnosticSubmissionSetting) String() string {
 func (*DiagnosticSubmissionSetting) ProtoMessage() {}
 
 func (x *DiagnosticSubmissionSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[54]
+	mi := &file_mdm_proto_msgTypes[55]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3829,7 +3884,7 @@ func (x *DiagnosticSubmissionSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DiagnosticSubmissionSetting.ProtoReflect.Descriptor instead.
 func (*DiagnosticSubmissionSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{54}
+	return file_mdm_proto_rawDescGZIP(), []int{55}
 }
 
 func (x *DiagnosticSubmissionSetting) GetEnabled() bool {
@@ -3850,7 +3905,7 @@ type AppAnalyticsSetting struct {
 func (x *AppAnalyticsSetting) Reset() {
 	*x = AppAnalyticsSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[55]
+		mi := &file_mdm_proto_msgTypes[56]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3863,7 +3918,7 @@ func (x *AppAnalyticsSetting) String() string {
 func (*AppAnalyticsSetting) ProtoMessage() {}
 
 func (x *AppAnalyticsSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[55]
+	mi := &file_mdm_proto_msgTypes[56]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3876,7 +3931,7 @@ func (x *AppAnalyticsSetting) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AppAnalyticsSetting.ProtoReflect.Descriptor instead.
 func (*AppAnalyticsSetting) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{55}
+	return file_mdm_proto_rawDescGZIP(), []int{56}
 }
 
 func (x *AppAnalyticsSetting) GetEnabled() bool {
@@ -3897,7 +3952,7 @@ type ManagedApplicationConfiguration struct {
 func (x *ManagedApplicationConfiguration) Reset() {
 	*x = ManagedApplicationConfiguration{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[56]
+		mi := &file_mdm_proto_msgTypes[57]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3910,7 +3965,7 @@ func (x *ManagedApplicationConfiguration) String() string {
 func (*ManagedApplicationConfiguration) ProtoMessage() {}
 
 func (x *ManagedApplicationConfiguration) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[56]
+	mi := &file_mdm_proto_msgTypes[57]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3923,7 +3978,7 @@ func (x *ManagedApplicationConfiguration) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ManagedApplicationConfiguration.ProtoReflect.Descriptor instead.
 func (*ManagedApplicationConfiguration) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{56}
+	return file_mdm_proto_rawDescGZIP(), []int{57}
 }
 
 func (x *ManagedApplicationConfiguration) GetIdentifiers() []string {
@@ -3944,7 +3999,7 @@ type ManagedApplicationAttributes struct {
 func (x *ManagedApplicationAttributes) Reset() {
 	*x = ManagedApplicationAttributes{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[57]
+		mi := &file_mdm_proto_msgTypes[58]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3957,7 +4012,7 @@ func (x *ManagedApplicationAttributes) String() string {
 func (*ManagedApplicationAttributes) ProtoMessage() {}
 
 func (x *ManagedApplicationAttributes) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[57]
+	mi := &file_mdm_proto_msgTypes[58]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3970,7 +4025,7 @@ func (x *ManagedApplicationAttributes) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ManagedApplicationAttributes.ProtoReflect.Descriptor instead.
 func (*ManagedApplicationAttributes) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{57}
+	return file_mdm_proto_rawDescGZIP(), []int{58}
 }
 
 func (x *ManagedApplicationAttributes) GetIdentifiers() []string {
@@ -3992,7 +4047,7 @@ type ManagedApplicationFeedback struct {
 func (x *ManagedApplicationFeedback) Reset() {
 	*x = ManagedApplicationFeedback{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[58]
+		mi := &file_mdm_proto_msgTypes[59]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4005,7 +4060,7 @@ func (x *ManagedApplicationFeedback) String() string {
 func (*ManagedApplicationFeedback) ProtoMessage() {}
 
 func (x *ManagedApplicationFeedback) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[58]
+	mi := &file_mdm_proto_msgTypes[59]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4018,7 +4073,7 @@ func (x *ManagedApplicationFeedback) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ManagedApplicationFeedback.ProtoReflect.Descriptor instead.
 func (*ManagedApplicationFeedback) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{58}
+	return file_mdm_proto_rawDescGZIP(), []int{59}
 }
 
 func (x *ManagedApplicationFeedback) GetIdentifiers() []string {
@@ -4049,7 +4104,7 @@ type SetFirmwarePassword struct {
 func (x *SetFirmwarePassword) Reset() {
 	*x = SetFirmwarePassword{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[59]
+		mi := &file_mdm_proto_msgTypes[60]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4062,7 +4117,7 @@ func (x *SetFirmwarePassword) String() string {
 func (*SetFirmwarePassword) ProtoMessage() {}
 
 func (x *SetFirmwarePassword) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[59]
+	mi := &file_mdm_proto_msgTypes[60]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4075,7 +4130,7 @@ func (x *SetFirmwarePassword) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use SetFirmwarePassword.ProtoReflect.Descriptor instead.
 func (*SetFirmwarePassword) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{59}
+	return file_mdm_proto_rawDescGZIP(), []int{60}
 }
 
 func (x *SetFirmwarePassword) GetCurrentPassword() string {
@@ -4117,7 +4172,7 @@ type VerifyFirmwarePassword struct {
 func (x *VerifyFirmwarePassword) Reset() {
 	*x = VerifyFirmwarePassword{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[60]
+		mi := &file_mdm_proto_msgTypes[61]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4130,7 +4185,7 @@ func (x *VerifyFirmwarePassword) String() string {
 func (*VerifyFirmwarePassword) ProtoMessage() {}
 
 func (x *VerifyFirmwarePassword) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[60]
+	mi := &file_mdm_proto_msgTypes[61]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4143,7 +4198,7 @@ func (x *VerifyFirmwarePassword) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use VerifyFirmwarePassword.ProtoReflect.Descriptor instead.
 func (*VerifyFirmwarePassword) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{60}
+	return file_mdm_proto_rawDescGZIP(), []int{61}
 }
 
 func (x *VerifyFirmwarePassword) GetPassword() string {
@@ -4167,7 +4222,7 @@ type SetRecoveryLock struct {
 func (x *SetRecoveryLock) Reset() {
 	*x = SetRecoveryLock{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[61]
+		mi := &file_mdm_proto_msgTypes[62]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4180,7 +4235,7 @@ func (x *SetRecoveryLock) String() string {
 func (*SetRecoveryLock) ProtoMessage() {}
 
 func (x *SetRecoveryLock) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[61]
+	mi := &file_mdm_proto_msgTypes[62]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4193,7 +4248,7 @@ func (x *SetRecoveryLock) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use SetRecoveryLock.ProtoReflect.Descriptor instead.
 func (*SetRecoveryLock) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{61}
+	return file_mdm_proto_rawDescGZIP(), []int{62}
 }
 
 func (x *SetRecoveryLock) GetCurrentPassword() string {
@@ -4235,7 +4290,7 @@ type VerifyRecoveryLock struct {
 func (x *VerifyRecoveryLock) Reset() {
 	*x = VerifyRecoveryLock{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[62]
+		mi := &file_mdm_proto_msgTypes[63]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4248,7 +4303,7 @@ func (x *VerifyRecoveryLock) String() string {
 func (*VerifyRecoveryLock) ProtoMessage() {}
 
 func (x *VerifyRecoveryLock) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[62]
+	mi := &file_mdm_proto_msgTypes[63]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4261,7 +4316,7 @@ func (x *VerifyRecoveryLock) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use VerifyRecoveryLock.ProtoReflect.Descriptor instead.
 func (*VerifyRecoveryLock) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{62}
+	return file_mdm_proto_rawDescGZIP(), []int{63}
 }
 
 func (x *VerifyRecoveryLock) GetPassword() string {
@@ -4283,7 +4338,7 @@ type SetAutoAdminPassword struct {
 func (x *SetAutoAdminPassword) Reset() {
 	*x = SetAutoAdminPassword{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[63]
+		mi := &file_mdm_proto_msgTypes[64]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4296,7 +4351,7 @@ func (x *SetAutoAdminPassword) String() string {
 func (*SetAutoAdminPassword) ProtoMessage() {}
 
 func (x *SetAutoAdminPassword) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[63]
+	mi := &file_mdm_proto_msgTypes[64]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4309,7 +4364,7 @@ func (x *SetAutoAdminPassword) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use SetAutoAdminPassword.ProtoReflect.Descriptor instead.
 func (*SetAutoAdminPassword) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{63}
+	return file_mdm_proto_rawDescGZIP(), []int{64}
 }
 
 func (x *SetAutoAdminPassword) GetGuid() string {
@@ -4337,7 +4392,7 @@ type ScheduleOSUpdate struct {
 func (x *ScheduleOSUpdate) Reset() {
 	*x = ScheduleOSUpdate{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[64]
+		mi := &file_mdm_proto_msgTypes[65]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4350,7 +4405,7 @@ func (x *ScheduleOSUpdate) String() string {
 func (*ScheduleOSUpdate) ProtoMessage() {}
 
 func (x *ScheduleOSUpdate) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[64]
+	mi := &file_mdm_proto_msgTypes[65]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4363,7 +4418,7 @@ func (x *ScheduleOSUpdate) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ScheduleOSUpdate.ProtoReflect.Descriptor instead.
 func (*ScheduleOSUpdate) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{64}
+	return file_mdm_proto_rawDescGZIP(), []int{65}
 }
 
 func (x *ScheduleOSUpdate) GetUpdates() []*Update {
@@ -4388,7 +4443,7 @@ type Update struct {
 func (x *Update) Reset() {
 	*x = Update{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[65]
+		mi := &file_mdm_proto_msgTypes[66]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4401,7 +4456,7 @@ func (x *Update) String() string {
 func (*Update) ProtoMessage() {}
 
 func (x *Update) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[65]
+	mi := &file_mdm_proto_msgTypes[66]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4414,7 +4469,7 @@ func (x *Update) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use Update.ProtoReflect.Descriptor instead.
 func (*Update) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{65}
+	return file_mdm_proto_rawDescGZIP(), []int{66}
 }
 
 func (x *Update) GetProductKey() string {
@@ -4463,7 +4518,7 @@ type ScheduleOSUpdateScan struct {
 func (x *ScheduleOSUpdateScan) Reset() {
 	*x = ScheduleOSUpdateScan{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[66]
+		mi := &file_mdm_proto_msgTypes[67]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4476,7 +4531,7 @@ func (x *ScheduleOSUpdateScan) String() string {
 func (*ScheduleOSUpdateScan) ProtoMessage() {}
 
 func (x *ScheduleOSUpdateScan) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[66]
+	mi := &file_mdm_proto_msgTypes[67]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4489,7 +4544,7 @@ func (x *ScheduleOSUpdateScan) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ScheduleOSUpdateScan.ProtoReflect.Descriptor instead.
 func (*ScheduleOSUpdateScan) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{66}
+	return file_mdm_proto_rawDescGZIP(), []int{67}
 }
 
 func (x *ScheduleOSUpdateScan) GetForce() bool {
@@ -4510,7 +4565,7 @@ type ActiveNSExtensions struct {
 func (x *ActiveNSExtensions) Reset() {
 	*x = ActiveNSExtensions{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[67]
+		mi := &file_mdm_proto_msgTypes[68]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4523,7 +4578,7 @@ func (x *ActiveNSExtensions) String() string {
 func (*ActiveNSExtensions) ProtoMessage() {}
 
 func (x *ActiveNSExtensions) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[67]
+	mi := &file_mdm_proto_msgTypes[68]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4536,7 +4591,7 @@ func (x *ActiveNSExtensions) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ActiveNSExtensions.ProtoReflect.Descriptor instead.
 func (*ActiveNSExtensions) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{67}
+	return file_mdm_proto_rawDescGZIP(), []int{68}
 }
 
 func (x *ActiveNSExtensions) GetFilterExtensionPoints() []string {
@@ -4560,7 +4615,7 @@ type RotateFileVaultKey struct {
 func (x *RotateFileVaultKey) Reset() {
 	*x = RotateFileVaultKey{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[68]
+		mi := &file_mdm_proto_msgTypes[69]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4573,7 +4628,7 @@ func (x *RotateFileVaultKey) String() string {
 func (*RotateFileVaultKey) ProtoMessage() {}
 
 func (x *RotateFileVaultKey) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[68]
+	mi := &file_mdm_proto_msgTypes[69]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4586,7 +4641,7 @@ func (x *RotateFileVaultKey) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use RotateFileVaultKey.ProtoReflect.Descriptor instead.
 func (*RotateFileVaultKey) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{68}
+	return file_mdm_proto_rawDescGZIP(), []int{69}
 }
 
 func (x *RotateFileVaultKey) GetKeyType() string {
@@ -4630,7 +4685,7 @@ type FileVaultUnlock struct {
 func (x *FileVaultUnlock) Reset() {
 	*x = FileVaultUnlock{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[69]
+		mi := &file_mdm_proto_msgTypes[70]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4643,7 +4698,7 @@ func (x *FileVaultUnlock) String() string {
 func (*FileVaultUnlock) ProtoMessage() {}
 
 func (x *FileVaultUnlock) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[69]
+	mi := &file_mdm_proto_msgTypes[70]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4656,7 +4711,7 @@ func (x *FileVaultUnlock) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use FileVaultUnlock.ProtoReflect.Descriptor instead.
 func (*FileVaultUnlock) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{69}
+	return file_mdm_proto_rawDescGZIP(), []int{70}
 }
 
 func (x *FileVaultUnlock) GetPassword() string {
@@ -4691,7 +4746,7 @@ type SetBootstrapToken struct {
 func (x *SetBootstrapToken) Reset() {
 	*x = SetBootstrapToken{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[70]
+		mi := &file_mdm_proto_msgTypes[71]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4704,7 +4759,7 @@ func (x *SetBootstrapToken) String() string {
 func (*SetBootstrapToken) ProtoMessage() {}
 
 func (x *SetBootstrapToken) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[70]
+	mi := &file_mdm_proto_msgTypes[71]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4717,7 +4772,7 @@ func (x *SetBootstrapToken) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use SetBootstrapToken.ProtoReflect.Descriptor instead.
 func (*SetBootstrapToken) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{70}
+	return file_mdm_proto_rawDescGZIP(), []int{71}
 }
 
 func (x *SetBootstrapToken) GetBootstrapToken() string {
@@ -4740,7 +4795,7 @@ type ResultPayload struct {
 func (x *ResultPayload) Reset() {
 	*x = ResultPayload{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[71]
+		mi := &file_mdm_proto_msgTypes[72]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4753,7 +4808,7 @@ func (x *ResultPayload) String() string {
 func (*ResultPayload) ProtoMessage() {}
 
 func (x *ResultPayload) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[71]
+	mi := &file_mdm_proto_msgTypes[72]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4766,7 +4821,7 @@ func (x *ResultPayload) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ResultPayload.ProtoReflect.Descriptor instead.
 func (*ResultPayload) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{71}
+	return file_mdm_proto_rawDescGZIP(), []int{72}
 }
 
 func (x *ResultPayload) GetUdid() string {
@@ -4807,7 +4862,7 @@ type ErrorChain struct {
 func (x *ErrorChain) Reset() {
 	*x = ErrorChain{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[72]
+		mi := &file_mdm_proto_msgTypes[73]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4820,7 +4875,7 @@ func (x *ErrorChain) String() string {
 func (*ErrorChain) ProtoMessage() {}
 
 func (x *ErrorChain) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[72]
+	mi := &file_mdm_proto_msgTypes[73]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4833,7 +4888,7 @@ func (x *ErrorChain) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ErrorChain.ProtoReflect.Descriptor instead.
 func (*ErrorChain) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{72}
+	return file_mdm_proto_rawDescGZIP(), []int{73}
 }
 
 func (x *ErrorChain) GetLocalizedDescription() string {
@@ -4875,7 +4930,7 @@ type RefreshCellularPlans struct {
 func (x *RefreshCellularPlans) Reset() {
 	*x = RefreshCellularPlans{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_mdm_proto_msgTypes[73]
+		mi := &file_mdm_proto_msgTypes[74]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4888,7 +4943,7 @@ func (x *RefreshCellularPlans) String() string {
 func (*RefreshCellularPlans) ProtoMessage() {}
 
 func (x *RefreshCellularPlans) ProtoReflect() protoreflect.Message {
-	mi := &file_mdm_proto_msgTypes[73]
+	mi := &file_mdm_proto_msgTypes[74]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4901,7 +4956,7 @@ func (x *RefreshCellularPlans) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use RefreshCellularPlans.ProtoReflect.Descriptor instead.
 func (*RefreshCellularPlans) Descriptor() ([]byte, []int) {
-	return file_mdm_proto_rawDescGZIP(), []int{73}
+	return file_mdm_proto_rawDescGZIP(), []int{74}
 }
 
 func (x *RefreshCellularPlans) GetEsimServerUrl() string {
@@ -5404,7 +5459,7 @@ var file_mdm_proto_rawDesc = []byte{
 	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,
+	0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xdc, 0x09, 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,
@@ -5476,231 +5531,242 @@ var file_mdm_proto_rawDesc = []byte{
 	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,
+	0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x61, 0x0a, 0x18, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72,
+	0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+	0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74,
+	0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+	0x52, 0x16, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+	0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 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, 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,
+	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, 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,
+	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, 0x56, 0x0a, 0x1d, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
+	0x72, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
+	0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x16, 0x72, 0x65, 0x63, 0x6f, 0x6d,
+	0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x64, 0x65, 0x6e, 0x63,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+	0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x64, 0x65, 0x6e, 0x63, 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 (
@@ -5716,7 +5782,7 @@ func file_mdm_proto_rawDescGZIP() []byte {
 }
 
 var file_mdm_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_mdm_proto_msgTypes = make([]protoimpl.MessageInfo, 74)
+var file_mdm_proto_msgTypes = make([]protoimpl.MessageInfo, 75)
 var file_mdm_proto_goTypes = []interface{}{
 	(ResultPayload_Status)(0),               // 0: mdmproto.ResultPayload.Status
 	(*CommandPayload)(nil),                  // 1: mdmproto.CommandPayload
@@ -5768,31 +5834,32 @@ var file_mdm_proto_goTypes = []interface{}{
 	(*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
+	(*SoftwareUpdateSettingsSetting)(nil),   // 50: mdmproto.SoftwareUpdateSettingsSetting
+	(*HostnameSetting)(nil),                 // 51: mdmproto.HostnameSetting
+	(*MDMOptionsSetting)(nil),               // 52: mdmproto.MDMOptionsSetting
+	(*MDMOptions)(nil),                      // 53: mdmproto.MDMOptions
+	(*PasscodeLockGracePeriodSetting)(nil),  // 54: mdmproto.PasscodeLockGracePeriodSetting
+	(*MaximumResidentUsersSetting)(nil),     // 55: mdmproto.MaximumResidentUsersSetting
+	(*DiagnosticSubmissionSetting)(nil),     // 56: mdmproto.DiagnosticSubmissionSetting
+	(*AppAnalyticsSetting)(nil),             // 57: mdmproto.AppAnalyticsSetting
+	(*ManagedApplicationConfiguration)(nil), // 58: mdmproto.ManagedApplicationConfiguration
+	(*ManagedApplicationAttributes)(nil),    // 59: mdmproto.ManagedApplicationAttributes
+	(*ManagedApplicationFeedback)(nil),      // 60: mdmproto.ManagedApplicationFeedback
+	(*SetFirmwarePassword)(nil),             // 61: mdmproto.SetFirmwarePassword
+	(*VerifyFirmwarePassword)(nil),          // 62: mdmproto.VerifyFirmwarePassword
+	(*SetRecoveryLock)(nil),                 // 63: mdmproto.SetRecoveryLock
+	(*VerifyRecoveryLock)(nil),              // 64: mdmproto.VerifyRecoveryLock
+	(*SetAutoAdminPassword)(nil),            // 65: mdmproto.SetAutoAdminPassword
+	(*ScheduleOSUpdate)(nil),                // 66: mdmproto.ScheduleOSUpdate
+	(*Update)(nil),                          // 67: mdmproto.Update
+	(*ScheduleOSUpdateScan)(nil),            // 68: mdmproto.ScheduleOSUpdateScan
+	(*ActiveNSExtensions)(nil),              // 69: mdmproto.ActiveNSExtensions
+	(*RotateFileVaultKey)(nil),              // 70: mdmproto.RotateFileVaultKey
+	(*FileVaultUnlock)(nil),                 // 71: mdmproto.FileVaultUnlock
+	(*SetBootstrapToken)(nil),               // 72: mdmproto.SetBootstrapToken
+	(*ResultPayload)(nil),                   // 73: mdmproto.ResultPayload
+	(*ErrorChain)(nil),                      // 74: mdmproto.ErrorChain
+	(*RefreshCellularPlans)(nil),            // 75: mdmproto.RefreshCellularPlans
 }
 var file_mdm_proto_depIdxs = []int32{
 	2,  // 0: mdmproto.CommandPayload.command:type_name -> mdmproto.Command
@@ -5820,21 +5887,21 @@ var file_mdm_proto_depIdxs = []int32{
 	34, // 22: mdmproto.Command.install_media:type_name -> mdmproto.InstallMedia
 	35, // 23: mdmproto.Command.remove_media:type_name -> mdmproto.RemoveMedia
 	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
+	58, // 25: mdmproto.Command.managed_application_configuration:type_name -> mdmproto.ManagedApplicationConfiguration
+	59, // 26: mdmproto.Command.managed_application_attributes:type_name -> mdmproto.ManagedApplicationAttributes
+	60, // 27: mdmproto.Command.managed_application_feedback:type_name -> mdmproto.ManagedApplicationFeedback
+	61, // 28: mdmproto.Command.set_firmware_password:type_name -> mdmproto.SetFirmwarePassword
+	62, // 29: mdmproto.Command.verify_firmware_password:type_name -> mdmproto.VerifyFirmwarePassword
+	65, // 30: mdmproto.Command.set_auto_admin_password:type_name -> mdmproto.SetAutoAdminPassword
+	66, // 31: mdmproto.Command.schedule_os_update:type_name -> mdmproto.ScheduleOSUpdate
+	68, // 32: mdmproto.Command.schedule_os_update_scan:type_name -> mdmproto.ScheduleOSUpdateScan
+	69, // 33: mdmproto.Command.active_ns_extensions:type_name -> mdmproto.ActiveNSExtensions
+	70, // 34: mdmproto.Command.rotate_filevault_key:type_name -> mdmproto.RotateFileVaultKey
 	21, // 35: mdmproto.Command.install_enterprise_application:type_name -> mdmproto.InstallEnterpriseApplication
-	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
+	72, // 36: mdmproto.Command.set_bootstrap_token:type_name -> mdmproto.SetBootstrapToken
+	63, // 37: mdmproto.Command.set_recovery_lock:type_name -> mdmproto.SetRecoveryLock
+	64, // 38: mdmproto.Command.verify_recovery_lock:type_name -> mdmproto.VerifyRecoveryLock
+	75, // 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
@@ -5848,30 +5915,31 @@ var file_mdm_proto_depIdxs = []int32{
 	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
+	51, // 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
+	52, // 60: mdmproto.Setting.mdm_options:type_name -> mdmproto.MDMOptionsSetting
+	54, // 61: mdmproto.Setting.passcode_lock_grace_period:type_name -> mdmproto.PasscodeLockGracePeriodSetting
+	55, // 62: mdmproto.Setting.maximum_resident_users:type_name -> mdmproto.MaximumResidentUsersSetting
+	56, // 63: mdmproto.Setting.diagnostic_submission:type_name -> mdmproto.DiagnosticSubmissionSetting
+	57, // 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
+	50, // 67: mdmproto.Setting.software_update_settings:type_name -> mdmproto.SoftwareUpdateSettingsSetting
+	47, // 68: mdmproto.ApplicationAttributesSetting.application_attributes:type_name -> mdmproto.ApplicationAttributes
+	53, // 69: mdmproto.MDMOptionsSetting.mdm_options:type_name -> mdmproto.MDMOptions
+	67, // 70: mdmproto.ScheduleOSUpdate.updates:type_name -> mdmproto.Update
+	71, // 71: mdmproto.RotateFileVaultKey.filevault_unlock:type_name -> mdmproto.FileVaultUnlock
+	74, // 72: mdmproto.ResultPayload.error_chain:type_name -> mdmproto.ErrorChain
+	73, // [73:73] is the sub-list for method output_type
+	73, // [73:73] is the sub-list for method input_type
+	73, // [73:73] is the sub-list for extension type_name
+	73, // [73:73] is the sub-list for extension extendee
+	0,  // [0:73] is the sub-list for field type_name
 }
 
 func init() { file_mdm_proto_init() }
@@ -6469,7 +6537,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HostnameSetting); i {
+			switch v := v.(*SoftwareUpdateSettingsSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6481,7 +6549,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MDMOptionsSetting); i {
+			switch v := v.(*HostnameSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6493,7 +6561,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MDMOptions); i {
+			switch v := v.(*MDMOptionsSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6505,7 +6573,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PasscodeLockGracePeriodSetting); i {
+			switch v := v.(*MDMOptions); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6517,7 +6585,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MaximumResidentUsersSetting); i {
+			switch v := v.(*PasscodeLockGracePeriodSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6529,7 +6597,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DiagnosticSubmissionSetting); i {
+			switch v := v.(*MaximumResidentUsersSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6541,7 +6609,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AppAnalyticsSetting); i {
+			switch v := v.(*DiagnosticSubmissionSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6553,7 +6621,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ManagedApplicationConfiguration); i {
+			switch v := v.(*AppAnalyticsSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6565,7 +6633,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ManagedApplicationAttributes); i {
+			switch v := v.(*ManagedApplicationConfiguration); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6577,7 +6645,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ManagedApplicationFeedback); i {
+			switch v := v.(*ManagedApplicationAttributes); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6589,7 +6657,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetFirmwarePassword); i {
+			switch v := v.(*ManagedApplicationFeedback); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6601,7 +6669,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*VerifyFirmwarePassword); i {
+			switch v := v.(*SetFirmwarePassword); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6613,7 +6681,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetRecoveryLock); i {
+			switch v := v.(*VerifyFirmwarePassword); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6625,7 +6693,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*VerifyRecoveryLock); i {
+			switch v := v.(*SetRecoveryLock); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6637,7 +6705,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetAutoAdminPassword); i {
+			switch v := v.(*VerifyRecoveryLock); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6649,7 +6717,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ScheduleOSUpdate); i {
+			switch v := v.(*SetAutoAdminPassword); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6661,7 +6729,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Update); i {
+			switch v := v.(*ScheduleOSUpdate); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6673,7 +6741,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ScheduleOSUpdateScan); i {
+			switch v := v.(*Update); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6685,7 +6753,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ActiveNSExtensions); i {
+			switch v := v.(*ScheduleOSUpdateScan); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6697,7 +6765,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RotateFileVaultKey); i {
+			switch v := v.(*ActiveNSExtensions); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6709,7 +6777,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FileVaultUnlock); i {
+			switch v := v.(*RotateFileVaultKey); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6721,7 +6789,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SetBootstrapToken); i {
+			switch v := v.(*FileVaultUnlock); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6733,7 +6801,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ResultPayload); i {
+			switch v := v.(*SetBootstrapToken); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6745,7 +6813,7 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ErrorChain); i {
+			switch v := v.(*ResultPayload); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -6757,6 +6825,18 @@ func file_mdm_proto_init() {
 			}
 		}
 		file_mdm_proto_msgTypes[73].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[74].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*RefreshCellularPlans); i {
 			case 0:
 				return &v.state
@@ -6817,7 +6897,7 @@ func file_mdm_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_mdm_proto_rawDesc,
 			NumEnums:      1,
-			NumMessages:   74,
+			NumMessages:   75,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
diff --git a/mdm/mdm/internal/mdmproto/mdm.proto b/mdm/mdm/internal/mdmproto/mdm.proto
index c5f4462..efc31f4 100644
--- a/mdm/mdm/internal/mdmproto/mdm.proto
+++ b/mdm/mdm/internal/mdmproto/mdm.proto
@@ -292,6 +292,7 @@ message Setting {
   AppAnalyticsSetting app_analytics = 14;
   ApplicationConfigurationSetting application_configuration = 15;
   TimeZoneSetting time_zone = 16;
+  SoftwareUpdateSettingsSetting software_update_settings = 17;
 }
 
 message VoiceRoamingSetting {
@@ -337,6 +338,10 @@ message TimeZoneSetting {
   string time_zone = 1;
 }
 
+message SoftwareUpdateSettingsSetting {
+  int64 recommendation_cadence = 1;
+}
+
 message HostnameSetting {
   string hostname = 1;
 }
diff --git a/mdm/mdm/marshal_proto.go b/mdm/mdm/marshal_proto.go
index 2422499..6b1e66d 100644
--- a/mdm/mdm/marshal_proto.go
+++ b/mdm/mdm/marshal_proto.go
@@ -514,6 +514,10 @@ func settingToProto(s Setting) *mdmproto.Setting {
 		pbs.AppAnalytics = &mdmproto.AppAnalyticsSetting{
 			Enabled: falseIfNil(s.Enabled),
 		}
+	case "SoftwareUpdateSettings":
+		pbs.SoftwareUpdateSettings = &mdmproto.SoftwareUpdateSettingsSetting{
+			RecommendationCadence: int64(zeroIntIfNil(s.RecommendationCadence)),
+		}
 	}
 	return &pbs
 }
diff --git a/mdm/mdm/unmarshal_proto.go b/mdm/mdm/unmarshal_proto.go
index f64c579..20cc6b5 100644
--- a/mdm/mdm/unmarshal_proto.go
+++ b/mdm/mdm/unmarshal_proto.go
@@ -455,6 +455,10 @@ func protoToSetting(s *mdmproto.Setting) Setting {
 	case "AppAnalytics":
 		pbs := s.GetAppAnalytics()
 		setting.Enabled = nilIfFalse(pbs.GetEnabled())
+	case "SoftwareUpdateSettings":
+		pbs := s.GetSoftwareUpdateSettings()
+		cadence := int(pbs.GetRecommendationCadence())
+		setting.RecommendationCadence = &cadence
 	}
 	return setting
 }


Test patch:
diff --git a/mdm/mdm/mdm_command_test.go b/mdm/mdm/mdm_command_test.go
index 3f31e8e..1fffce6 100644
--- a/mdm/mdm/mdm_command_test.go
+++ b/mdm/mdm/mdm_command_test.go
@@ -29,6 +29,7 @@ Not tested end to end but checked against pdf:
 
 func TestMarshalCommand(t *testing.T) {
 	var deferrals int64 = 3
+	var cadence int
 	var tests = []struct {
 		Command Command
 	}{
@@ -167,6 +168,14 @@ func TestMarshalCommand(t *testing.T) {
 				},
 			},
 		},
+		{
+			Command: Command{
+				RequestType: "Settings",
+				Settings: &Settings{
+					Settings: []Setting{{Item: "SoftwareUpdateSettings", RecommendationCadence: &cadence}},
+				},
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.Command.RequestType+"_json", func(t *testing.T) {
@@ -573,6 +582,25 @@ func TestEndToEnd(t *testing.T) {
 				}
 			},
 		},
+		{
+			name: "SoftwareUpdateSettings",
+			requestBytes: []byte(
+				`{"request_type":"Settings","settings":[{"item":"SoftwareUpdateSettings","recommendation_cadence":0}]}`,
+			),
+			testFn: func(t *testing.T, parts endToEndParts) {
+				needToSee := [][]byte{
+					[]byte(`Settings`),
+					[]byte(`SoftwareUpdateSettings`),
+					[]byte(`RecommendationCadence`),
+					[]byte(`0`),
+				}
+				for _, b := range needToSee {
+					if !bytes.Contains(parts.plistData, b) {
+						t.Error(fmt.Sprintf("marshaled plist does not contain required bytes: '%s'", string(b)))
+					}
+				}
+			},
+		},
 	}
 
 	for _, tt := range tests {