Repository: argoproj/argo-cd
Pull request #4475 (2020-10-02 04:02:34)

feat: autosync protection
Checklist:

* [ ] Either (a) I've created an [enhancement proposal](https://github.com/argoproj/argo-cd/issues/new/choose) and discussed it with the community, (b) this is a bug fix, or (c) this does not need to be in the release notes.
* [ ] The title of the PR states what changed and the related issues number (used for the release note).
* [ ] I've updated both the CLI and UI to expose my feature, or I plan to submit a second PR with them.
* [ ] Does this PR require documentation updates?
* [ ] I've updated documentation as required by this PR.
* [ ] Optional. My organization is added to USERS.md.
* [ ] I've signed the CLA and my build is green ([troubleshooting builds](https://argoproj.github.io/argo-cd/developer-guide/ci/)). 


codecov-commenter: # [Codecov](https://codecov.io/gh/argoproj/argo-cd/pull/4475?src=pr&el=h1) Report
> Merging [#4475](https://codecov.io/gh/argoproj/argo-cd/pull/4475?src=pr&el=desc) into [master](https://codecov.io/gh/argoproj/argo-cd/commit/91e62bfc3b98b12cd7d0baba6c082edbf82fdc34?el=desc) will **increase** coverage by `0.01%`.
> The diff coverage is `33.33%`.

[![Impacted file tree graph](https://codecov.io/gh/argoproj/argo-cd/pull/4475/graphs/tree.svg?width=650&height=150&src=pr&token=kf5kwuegwE)](https://codecov.io/gh/argoproj/argo-cd/pull/4475?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #4475      +/-   ##
==========================================
+ Coverage   41.17%   41.18%   +0.01%     
==========================================
  Files         122      122              
  Lines       16588    16593       +5     
==========================================
+ Hits         6830     6834       +4     
  Misses       8776     8776              
- Partials      982      983       +1     
```


| [Impacted Files](https://codecov.io/gh/argoproj/argo-cd/pull/4475?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/apis/application/v1alpha1/types.go](https://codecov.io/gh/argoproj/argo-cd/pull/4475/diff?src=pr&el=tree#diff-cGtnL2FwaXMvYXBwbGljYXRpb24vdjFhbHBoYTEvdHlwZXMuZ28=) | `58.30% <ø> (ø)` | |
| [cmd/argocd/commands/app.go](https://codecov.io/gh/argoproj/argo-cd/pull/4475/diff?src=pr&el=tree#diff-Y21kL2FyZ29jZC9jb21tYW5kcy9hcHAuZ28=) | `6.08% <20.00%> (+0.04%)` | :arrow_up: |
| [controller/appcontroller.go](https://codecov.io/gh/argoproj/argo-cd/pull/4475/diff?src=pr&el=tree#diff-Y29udHJvbGxlci9hcHBjb250cm9sbGVyLmdv) | `48.79% <100.00%> (+0.68%)` | :arrow_up: |
| [util/settings/settings.go](https://codecov.io/gh/argoproj/argo-cd/pull/4475/diff?src=pr&el=tree#diff-dXRpbC9zZXR0aW5ncy9zZXR0aW5ncy5nbw==) | `40.60% <0.00%> (-0.51%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/argoproj/argo-cd/pull/4475?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/argoproj/argo-cd/pull/4475?src=pr&el=footer). Last update [91e62bf...bdd20d9](https://codecov.io/gh/argoproj/argo-cd/pull/4475?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


Patch:
diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml
index 74dd05224..ab23e0960 100644
--- a/.github/workflows/ci-build.yaml
+++ b/.github/workflows/ci-build.yaml
@@ -326,7 +326,7 @@ jobs:
           git config --global user.email "john.doe@example.com"
       - name: Pull Docker image required for tests
         run: |
-          docker pull quay.io/dexidp/dex:v2.22.0
+          docker pull quay.io/dexidp/dex:v2.25.0
           docker pull argoproj/argo-cd-ci-builder:v1.0.0
           docker pull redis:5.0.8-alpine
       - name: Create target directory for binaries in the build-process
diff --git a/Procfile b/Procfile
index 09a1adc1c..a96ddd261 100644
--- a/Procfile
+++ b/Procfile
@@ -1,6 +1,6 @@
 controller: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} go run ./cmd/argocd-application-controller/main.go --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081}"
 api-server: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} go run ./cmd/argocd-server/main.go --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --disable-auth=${ARGOCD_E2E_DISABLE_AUTH:-'true'} --insecure --dex-server http://localhost:${ARGOCD_E2E_DEX_PORT:-5556} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081} --port ${ARGOCD_E2E_APISERVER_PORT:-8080} --staticassets ui/dist/app"
-dex: sh -c "go run github.com/argoproj/argo-cd/cmd/argocd-util gendexcfg -o `pwd`/dist/dex.yaml && docker run --rm -p ${ARGOCD_E2E_DEX_PORT:-5556}:${ARGOCD_E2E_DEX_PORT:-5556} -v `pwd`/dist/dex.yaml:/dex.yaml quay.io/dexidp/dex:v2.22.0 serve /dex.yaml"
+dex: sh -c "go run github.com/argoproj/argo-cd/cmd/argocd-util gendexcfg -o `pwd`/dist/dex.yaml && docker run --rm -p ${ARGOCD_E2E_DEX_PORT:-5556}:${ARGOCD_E2E_DEX_PORT:-5556} -v `pwd`/dist/dex.yaml:/dex.yaml quay.io/dexidp/dex:v2.25.0 serve /dex.yaml"
 redis: docker run --rm --name argocd-redis -i -p ${ARGOCD_E2E_REDIS_PORT:-6379}:${ARGOCD_E2E_REDIS_PORT:-6379} redis:5.0.8-alpine --save "" --appendonly no --port ${ARGOCD_E2E_REDIS_PORT:-6379}
 repo-server: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_GNUPGHOME=${ARGOCD_GNUPGHOME:-/tmp/argocd-local/gpg/keys} ARGOCD_GPG_DATA_PATH=${ARGOCD_GPG_DATA_PATH:-/tmp/argocd-local/gpg/source} ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} go run ./cmd/argocd-repo-server/main.go --loglevel debug --port ${ARGOCD_E2E_REPOSERVER_PORT:-8081} --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379}"
 ui: sh -c 'cd ui && ${ARGOCD_E2E_YARN_CMD:-yarn} start'
diff --git a/USERS.md b/USERS.md
index 3563ba83e..575eab852 100644
--- a/USERS.md
+++ b/USERS.md
@@ -65,6 +65,7 @@ Currently, the following organizations are **officially** using Argo CD:
 1. [Swisscom](https://www.swisscom.ch)
 1. [Swissquote](https://github.com/swissquote)
 1. [Syncier](https://syncier.com/)
+1. [TableCheck](https://tablecheck.com/)
 1. [Tesla](https://tesla.com/)
 1. [ThousandEyes](https://www.thousandeyes.com/)
 1. [Ticketmaster](https://ticketmaster.com)
@@ -87,3 +88,5 @@ Currently, the following organizations are **officially** using Argo CD:
 1. [New Relic](https://newrelic.com/)
 1. [Sumo Logic](https://sumologic.com/)
 1. [Kinguin](https://www.kinguin.net/)
+1. [Speee](https://speee.jp/)
+1. [VISITS Technologies](https://visits.world/en)
diff --git a/assets/swagger.json b/assets/swagger.json
index 4b3aac26e..30352f115 100644
--- a/assets/swagger.json
+++ b/assets/swagger.json
@@ -5223,6 +5223,11 @@
       "type": "object",
       "title": "SyncPolicyAutomated controls the behavior of an automated sync",
       "properties": {
+        "allowEmpty": {
+          "type": "boolean",
+          "format": "boolean",
+          "title": "AllowEmpty allows apps have zero live resources (default: false)"
+        },
         "prune": {
           "type": "boolean",
           "format": "boolean",
diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go
index aabb29e36..dbc9dec69 100644
--- a/cmd/argocd/commands/app.go
+++ b/cmd/argocd/commands/app.go
@@ -621,6 +621,12 @@ func setAppSpecOptions(flags *pflag.FlagSet, spec *argoappv1.ApplicationSpec, ap
 		}
 		spec.SyncPolicy.Automated.SelfHeal = appOpts.selfHeal
 	}
+	if flags.Changed("allow-empty") {
+		if spec.SyncPolicy == nil || spec.SyncPolicy.Automated == nil {
+			log.Fatal("Cannot set --allow-empty: application not configured with automatic sync")
+		}
+		spec.SyncPolicy.Automated.AllowEmpty = appOpts.allowEmpty
+	}
 
 	return visited
 }
@@ -760,6 +766,7 @@ type appOptions struct {
 	syncOptions            []string
 	autoPrune              bool
 	selfHeal               bool
+	allowEmpty             bool
 	namePrefix             string
 	nameSuffix             string
 	directoryRecurse       bool
@@ -798,6 +805,7 @@ func addAppFlags(command *cobra.Command, opts *appOptions) {
 	command.Flags().StringArrayVar(&opts.syncOptions, "sync-option", []string{}, "Add or remove a sync options, e.g add `Prune=false`. Remove using `!` prefix, e.g. `!Prune=false`")
 	command.Flags().BoolVar(&opts.autoPrune, "auto-prune", false, "Set automatic pruning when sync is automated")
 	command.Flags().BoolVar(&opts.selfHeal, "self-heal", false, "Set self healing when sync is automated")
+	command.Flags().BoolVar(&opts.allowEmpty, "allow-empty", false, "Set allow zero live resources when sync is automated")
 	command.Flags().StringVar(&opts.namePrefix, "nameprefix", "", "Kustomize nameprefix")
 	command.Flags().StringVar(&opts.nameSuffix, "namesuffix", "", "Kustomize namesuffix")
 	command.Flags().StringVar(&opts.kustomizeVersion, "kustomize-version", "", "Kustomize version")
diff --git a/controller/appcontroller.go b/controller/appcontroller.go
index 445a4fd11..c102c9c93 100644
--- a/controller/appcontroller.go
+++ b/controller/appcontroller.go
@@ -1325,7 +1325,7 @@ func (ctrl *ApplicationController) autoSync(app *appv1.Application, syncStatus *
 
 	}
 
-	if app.Spec.SyncPolicy.Automated.Prune {
+	if app.Spec.SyncPolicy.Automated.Prune && !app.Spec.SyncPolicy.Automated.AllowEmpty {
 		bAllNeedPrune := true
 		for _, r := range resources {
 			if !r.RequiresPruning {
diff --git a/controller/cache/info.go b/controller/cache/info.go
index 5bcf1375a..db7649e64 100644
--- a/controller/cache/info.go
+++ b/controller/cache/info.go
@@ -142,7 +142,7 @@ func populateIngressInfo(un *unstructured.Unstructured, res *ResourceInfo) {
 
 				subPath := ""
 				if nestedPath, ok, err := unstructured.NestedString(path, "path"); ok && err == nil {
-					subPath = nestedPath
+					subPath = strings.TrimSuffix(nestedPath, "*")
 				}
 				externalURL += subPath
 				urlsSet[externalURL] = true
diff --git a/docs/cli_installation.md b/docs/cli_installation.md
index 2d688b0f0..3ed832bda 100644
--- a/docs/cli_installation.md
+++ b/docs/cli_installation.md
@@ -53,3 +53,27 @@ chmod +x /usr/local/bin/argocd
 ```
 
 After finishing either of the instructions above, you should now be able to run `argocd` commands.
+
+
+## Windows
+
+### Download With Powershell: Invoke-WebRequest
+
+You can view the latest version of Argo CD at the link above or run the following command to grab the version:
+
+```powershell
+$version = (Invoke-RestMethod https://api.github.com/repos/argoproj/argo-cd/releases/latest).tag_name
+```
+
+Replace `$version` in the command below with the version of Argo CD you would like to download:
+
+```powershell
+$url = "https://github.com/argoproj/argo-cd/releases/download/" + $version + "/argocd-windows-amd64.exe"
+$output = "argocd.exe"
+
+Invoke-WebRequest -Uri $url -OutFile $output
+```
+Also please note you will probably need to move the file into your PATH.
+
+
+After finishing the instructions above, you should now be able to run `argocd` commands.
diff --git a/docs/developer-guide/dependencies.md b/docs/developer-guide/dependencies.md
new file mode 100644
index 000000000..374d85eed
--- /dev/null
+++ b/docs/developer-guide/dependencies.md
@@ -0,0 +1,33 @@
+# Managing Dependencies
+
+## GitOps Engine (`github.com/argoproj/gitops-engine`)
+
+### Repository
+
+https://github.com/argoproj/gitops-engine
+
+### Pulling changes from `gitops-engine` 
+
+After your GitOps Engine PR has been merged, ArgoCD needs to be updated to pull in the version of the GitOps engine that contains your change.  Here are the steps:
+
+* Retrieve the SHA hash for your commit. You will use this in the next step.
+* From the `argo-cd` folder, run the following command
+
+    `go get github.com/argoproj/gitops-engine@<git-commit-sha>`
+
+    If you get an error message `invalid version: unknown revision` then you got the wrong SHA hash
+
+* Run:
+
+    `go mod tidy`
+
+* The following files are changed:
+
+    - `go.mod`
+    - `go.sum`
+
+* Create an ArgoCD PR with a `refactor:` type in its title for the two file changes.
+
+### Tips:
+* See https://github.com/argoproj/argo-cd/pull/4434 as an example
+* The PR might require additional, dependent changes in ArgoCD that are directly impacted by the changes made in the engine.  
diff --git a/docs/index.md b/docs/index.md
index ca81014e1..b42bba85b 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -24,7 +24,7 @@ kubectl create namespace argocd
 kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
 ```
 
-Follow our [getting started guide](getting_started.md). Further user oriented [documentation](user_guide/)
+Follow our [getting started guide](getting_started.md). Further user oriented [documentation](user-guide/)
 is provided for additional features. If you are looking to upgrade ArgoCD, see the [upgrade guide](./operator-manual/upgrading/overview.md).
 Developer oriented [documentation](developer-guide/) is available for people interested in building third-party integrations.
 
diff --git a/docs/user-guide/auto_sync.md b/docs/user-guide/auto_sync.md
index 3acd56990..df39d2ef5 100644
--- a/docs/user-guide/auto_sync.md
+++ b/docs/user-guide/auto_sync.md
@@ -39,6 +39,25 @@ spec:
       prune: true
 ```
 
+## Automatic Pruning with Allow-Empty (v1.8)
+
+By default (and as a safety mechanism), automated sync with prune have a protection from any automation/human errors 
+when there are no target resources. It prevents application from having empty resources. To allow applications have empty resources, run:
+
+```bash
+argocd app set <APPNAME> --allow-empty
+```
+
+Or by setting the allow empty option to true in the automated sync policy:
+
+```yaml
+spec:
+  syncPolicy:
+    automated:
+      prune: true
+      allowEmpty: true
+```
+
 ## Automatic Self-Healing
 By default, changes that are made to the live cluster will not trigger automated sync. To enable automatic sync 
 when the live cluster's state deviates from the state defined in Git, run:
diff --git a/docs/user-guide/compare-options.md b/docs/user-guide/compare-options.md
index 27024b261..1f4661028 100644
--- a/docs/user-guide/compare-options.md
+++ b/docs/user-guide/compare-options.md
@@ -4,7 +4,7 @@
 
 >v1.1
 
-You may wish to exclude resources from the app's overall sync status under certain circumstances. E.g. if they are generated by a tool. This can be done by adding this annotation:
+You may wish to exclude resources from the app's overall sync status under certain circumstances. E.g. if they are generated by a tool. This can be done by adding this annotation on the resource you wish to exclude:
 
 ```yaml
 metadata:
diff --git a/go.mod b/go.mod
index 8d62e0a47..156ac7994 100644
--- a/go.mod
+++ b/go.mod
@@ -7,7 +7,7 @@ require (
 	github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d
 	github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6 // indirect
 	github.com/alicebob/miniredis v2.5.0+incompatible
-	github.com/argoproj/gitops-engine v0.1.3-0.20200925215903-d25b8fd69f0d
+	github.com/argoproj/gitops-engine v0.1.3-0.20201003031953-3a3f6a33d7ee
 	github.com/argoproj/pkg v0.2.0
 	github.com/casbin/casbin v1.9.1
 	github.com/chai2010/gettext-go v0.0.0-20170215093142-bf70f2a70fb1 // indirect
diff --git a/go.sum b/go.sum
index 6bd90ef61..71ce5199d 100644
--- a/go.sum
+++ b/go.sum
@@ -68,8 +68,8 @@ github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo
 github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=
 github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
 github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q=
-github.com/argoproj/gitops-engine v0.1.3-0.20200925215903-d25b8fd69f0d h1:uSKX9+3sVmo4DPwKsn8IdwAMxjkvqCpLN5FXG426vic=
-github.com/argoproj/gitops-engine v0.1.3-0.20200925215903-d25b8fd69f0d/go.mod h1:jeiFokbkgLXjvx3eXB0MddyxsmftWsFTY7paLH4ZqCg=
+github.com/argoproj/gitops-engine v0.1.3-0.20201003031953-3a3f6a33d7ee h1:L1n/Q1twmfqcMcBstONI4SIUOI7wu6cmYK4woxBvXIk=
+github.com/argoproj/gitops-engine v0.1.3-0.20201003031953-3a3f6a33d7ee/go.mod h1:jeiFokbkgLXjvx3eXB0MddyxsmftWsFTY7paLH4ZqCg=
 github.com/argoproj/pkg v0.2.0 h1:ETgC600kr8WcAi3MEVY5sA1H7H/u1/IysYOobwsZ8No=
 github.com/argoproj/pkg v0.2.0/go.mod h1:F4TZgInLUEjzsWFB/BTJBsewoEy0ucnKSq6vmQiD/yc=
 github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
diff --git a/manifests/base/dex/argocd-dex-server-deployment.yaml b/manifests/base/dex/argocd-dex-server-deployment.yaml
index 7bf33be47..13b247f79 100644
--- a/manifests/base/dex/argocd-dex-server-deployment.yaml
+++ b/manifests/base/dex/argocd-dex-server-deployment.yaml
@@ -26,7 +26,7 @@ spec:
           name: static-files
       containers:
       - name: dex
-        image: quay.io/dexidp/dex:v2.22.0
+        image: quay.io/dexidp/dex:v2.25.0
         imagePullPolicy: Always
         command: [/shared/argocd-util, rundex]
         ports:
diff --git a/manifests/cluster-install/kustomization.yaml b/manifests/cluster-install/kustomization.yaml
index 742718e42..3f9744f06 100644
--- a/manifests/cluster-install/kustomization.yaml
+++ b/manifests/cluster-install/kustomization.yaml
@@ -1,6 +1,6 @@
 apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
 
-bases:
+resources:
 - ../namespace-install
 - ../cluster-rbac
diff --git a/manifests/crds/application-crd.yaml b/manifests/crds/application-crd.yaml
index 6e7b6fff9..44ae2f062 100644
--- a/manifests/crds/application-crd.yaml
+++ b/manifests/crds/application-crd.yaml
@@ -555,6 +555,9 @@ spec:
                 automated:
                   description: Automated will keep an application synced to the target revision
                   properties:
+                    allowEmpty:
+                      description: 'AllowEmpty allows apps have zero live resources (default: false)'
+                      type: boolean
                     prune:
                       description: 'Prune will prune resources automatically as part of automated sync (default: false)'
                       type: boolean
diff --git a/manifests/ha/cluster-install/kustomization.yaml b/manifests/ha/cluster-install/kustomization.yaml
index 22914d4aa..f117e10a0 100644
--- a/manifests/ha/cluster-install/kustomization.yaml
+++ b/manifests/ha/cluster-install/kustomization.yaml
@@ -1,6 +1,6 @@
 apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
 
-bases:
+resources:
 - ../namespace-install
 - ../../cluster-rbac
diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml
index 0117cd047..20ce2f7ce 100644
--- a/manifests/ha/install.yaml
+++ b/manifests/ha/install.yaml
@@ -556,6 +556,9 @@ spec:
                 automated:
                   description: Automated will keep an application synced to the target revision
                   properties:
+                    allowEmpty:
+                      description: 'AllowEmpty allows apps have zero live resources (default: false)'
+                      type: boolean
                     prune:
                       description: 'Prune will prune resources automatically as part of automated sync (default: false)'
                       type: boolean
@@ -2785,7 +2788,7 @@ spec:
       - command:
         - /shared/argocd-util
         - rundex
-        image: quay.io/dexidp/dex:v2.22.0
+        image: quay.io/dexidp/dex:v2.25.0
         imagePullPolicy: Always
         name: dex
         ports:
diff --git a/manifests/ha/namespace-install.yaml b/manifests/ha/namespace-install.yaml
index 270515d6d..46fe10d7b 100644
--- a/manifests/ha/namespace-install.yaml
+++ b/manifests/ha/namespace-install.yaml
@@ -556,6 +556,9 @@ spec:
                 automated:
                   description: Automated will keep an application synced to the target revision
                   properties:
+                    allowEmpty:
+                      description: 'AllowEmpty allows apps have zero live resources (default: false)'
+                      type: boolean
                     prune:
                       description: 'Prune will prune resources automatically as part of automated sync (default: false)'
                       type: boolean
@@ -2700,7 +2703,7 @@ spec:
       - command:
         - /shared/argocd-util
         - rundex
-        image: quay.io/dexidp/dex:v2.22.0
+        image: quay.io/dexidp/dex:v2.25.0
         imagePullPolicy: Always
         name: dex
         ports:
diff --git a/manifests/ha/namespace-install/kustomization.yaml b/manifests/ha/namespace-install/kustomization.yaml
index 8752d2421..3cf4567ed 100644
--- a/manifests/ha/namespace-install/kustomization.yaml
+++ b/manifests/ha/namespace-install/kustomization.yaml
@@ -1,6 +1,6 @@
 apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
 
-bases:
+resources:
 - ../../crds
 - ../base
diff --git a/manifests/install.yaml b/manifests/install.yaml
index e7a8242b4..860ab033c 100644
--- a/manifests/install.yaml
+++ b/manifests/install.yaml
@@ -556,6 +556,9 @@ spec:
                 automated:
                   description: Automated will keep an application synced to the target revision
                   properties:
+                    allowEmpty:
+                      description: 'AllowEmpty allows apps have zero live resources (default: false)'
+                      type: boolean
                     prune:
                       description: 'Prune will prune resources automatically as part of automated sync (default: false)'
                       type: boolean
@@ -2373,7 +2376,7 @@ spec:
       - command:
         - /shared/argocd-util
         - rundex
-        image: quay.io/dexidp/dex:v2.22.0
+        image: quay.io/dexidp/dex:v2.25.0
         imagePullPolicy: Always
         name: dex
         ports:
diff --git a/manifests/namespace-install.yaml b/manifests/namespace-install.yaml
index 7b8a1b808..a4fec59d0 100644
--- a/manifests/namespace-install.yaml
+++ b/manifests/namespace-install.yaml
@@ -556,6 +556,9 @@ spec:
                 automated:
                   description: Automated will keep an application synced to the target revision
                   properties:
+                    allowEmpty:
+                      description: 'AllowEmpty allows apps have zero live resources (default: false)'
+                      type: boolean
                     prune:
                       description: 'Prune will prune resources automatically as part of automated sync (default: false)'
                       type: boolean
@@ -2288,7 +2291,7 @@ spec:
       - command:
         - /shared/argocd-util
         - rundex
-        image: quay.io/dexidp/dex:v2.22.0
+        image: quay.io/dexidp/dex:v2.25.0
         imagePullPolicy: Always
         name: dex
         ports:
diff --git a/manifests/namespace-install/kustomization.yaml b/manifests/namespace-install/kustomization.yaml
index 23ce844a9..ca0389293 100644
--- a/manifests/namespace-install/kustomization.yaml
+++ b/manifests/namespace-install/kustomization.yaml
@@ -1,6 +1,6 @@
 apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
 
-bases:
+resources:
 - ../crds
 - ../base
diff --git a/mkdocs.yml b/mkdocs.yml
index b46d01df6..5bbd0a4c3 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -92,6 +92,7 @@ nav:
     - developer-guide/debugging-remote-environment.md
     - developer-guide/api-docs.md
     - developer-guide/test-e2e.md
+    - developer-guide/dependencies.md
     - developer-guide/ci.md
     - developer-guide/releasing.md
     - developer-guide/site.md
diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go
index 288e4ec66..e004e7d7c 100644
--- a/pkg/apis/application/v1alpha1/generated.pb.go
+++ b/pkg/apis/application/v1alpha1/generated.pb.go
@@ -2541,376 +2541,377 @@ func init() {
 }
 
 var fileDescriptor_e7dc23c2911a1a00 = []byte{
-	// 5899 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7c, 0x5d, 0x6c, 0x24, 0xd9,
-	0x55, 0xf0, 0x56, 0xb7, 0x7f, 0xba, 0x8f, 0x7f, 0x66, 0x7c, 0x67, 0x67, 0xe3, 0xcc, 0xb7, 0x19,
-	0x8f, 0x6a, 0x95, 0x64, 0x3f, 0x92, 0xd8, 0xec, 0xb0, 0xc0, 0x26, 0x0b, 0x09, 0x6e, 0x7b, 0x7e,
-	0x3c, 0x63, 0x7b, 0xbc, 0xc7, 0xde, 0x1d, 0x69, 0xf3, 0xc3, 0x96, 0xab, 0x6f, 0x77, 0xd7, 0xb8,
-	0xbb, 0xaa, 0xb7, 0xaa, 0xda, 0x33, 0x5e, 0x92, 0x90, 0x40, 0x82, 0x56, 0x61, 0x37, 0x42, 0x44,
-	0xe4, 0x05, 0x82, 0x12, 0x78, 0x40, 0x44, 0xe2, 0x21, 0x42, 0x42, 0xf0, 0x1a, 0x24, 0x58, 0xf1,
-	0x80, 0xa2, 0x08, 0xc1, 0x0a, 0x21, 0xc3, 0x3a, 0x42, 0x42, 0xf0, 0x10, 0x10, 0x3c, 0xcd, 0x13,
-	0xba, 0xff, 0xb7, 0xaa, 0xbb, 0xc7, 0xf6, 0x74, 0xed, 0x24, 0x0a, 0x6f, 0xdd, 0xf7, 0x9c, 0x3a,
-	0xe7, 0xd4, 0xbd, 0xe7, 0x9c, 0x7b, 0xce, 0xb9, 0xe7, 0x16, 0xac, 0x35, 0x83, 0xb4, 0xd5, 0xdb,
-	0x5d, 0xf4, 0xa3, 0xce, 0x92, 0x17, 0x37, 0xa3, 0x6e, 0x1c, 0xdd, 0xe1, 0x3f, 0x3e, 0xe2, 0xd7,
-	0x97, 0xba, 0x7b, 0xcd, 0x25, 0xaf, 0x1b, 0x24, 0x4b, 0x5e, 0xb7, 0xdb, 0x0e, 0x7c, 0x2f, 0x0d,
-	0xa2, 0x70, 0x69, 0xff, 0x19, 0xaf, 0xdd, 0x6d, 0x79, 0xcf, 0x2c, 0x35, 0x69, 0x48, 0x63, 0x2f,
-	0xa5, 0xf5, 0xc5, 0x6e, 0x1c, 0xa5, 0x11, 0xf9, 0xa8, 0x21, 0xb5, 0xa8, 0x48, 0xf1, 0x1f, 0xbf,
-	0xec, 0xd7, 0x17, 0xbb, 0x7b, 0xcd, 0x45, 0x46, 0x6a, 0xd1, 0x22, 0xb5, 0xa8, 0x48, 0x5d, 0xf8,
-	0x88, 0x25, 0x45, 0x33, 0x6a, 0x46, 0x4b, 0x9c, 0xe2, 0x6e, 0xaf, 0xc1, 0xff, 0xf1, 0x3f, 0xfc,
-	0x97, 0xe0, 0x74, 0xc1, 0xdd, 0x7b, 0x2e, 0x59, 0x0c, 0x22, 0x26, 0xdb, 0x92, 0x1f, 0xc5, 0x74,
-	0x69, 0xbf, 0x4f, 0x9a, 0x0b, 0xcf, 0x1a, 0x9c, 0x8e, 0xe7, 0xb7, 0x82, 0x90, 0xc6, 0x07, 0xe6,
-	0x85, 0x3a, 0x34, 0xf5, 0x06, 0x3d, 0xb5, 0x34, 0xec, 0xa9, 0xb8, 0x17, 0xa6, 0x41, 0x87, 0xf6,
-	0x3d, 0xf0, 0x73, 0xc7, 0x3d, 0x90, 0xf8, 0x2d, 0xda, 0xf1, 0xf2, 0xcf, 0xb9, 0xaf, 0xc2, 0xcc,
-	0xf2, 0xed, 0xed, 0xe5, 0x5e, 0xda, 0x5a, 0x89, 0xc2, 0x46, 0xd0, 0x24, 0x3f, 0x0b, 0x53, 0x7e,
-	0xbb, 0x97, 0xa4, 0x34, 0xde, 0xf4, 0x3a, 0x74, 0xde, 0xb9, 0xe4, 0x3c, 0x5d, 0xad, 0x9d, 0x7b,
-	0xeb, 0x70, 0xe1, 0xb1, 0xa3, 0xc3, 0x85, 0xa9, 0x15, 0x03, 0x42, 0x1b, 0x8f, 0xfc, 0x7f, 0x98,
-	0x8c, 0xa3, 0x36, 0x5d, 0xc6, 0xcd, 0xf9, 0x12, 0x7f, 0xe4, 0x8c, 0x7c, 0x64, 0x12, 0xc5, 0x30,
-	0x2a, 0xb8, 0xfb, 0xbd, 0x12, 0xc0, 0x72, 0xb7, 0xbb, 0x15, 0x47, 0x77, 0xa8, 0x9f, 0x92, 0x57,
-	0xa0, 0xc2, 0x66, 0xa1, 0xee, 0xa5, 0x1e, 0xe7, 0x36, 0x75, 0xf9, 0xa7, 0x17, 0xc5, 0xcb, 0x2c,
-	0xda, 0x2f, 0x63, 0x56, 0x8e, 0x61, 0x2f, 0xee, 0x3f, 0xb3, 0x78, 0x6b, 0x97, 0x3d, 0xbf, 0x41,
-	0x53, 0xaf, 0x46, 0x24, 0x33, 0x30, 0x63, 0xa8, 0xa9, 0x92, 0x3d, 0x18, 0x4b, 0xba, 0xd4, 0xe7,
-	0x82, 0x4d, 0x5d, 0x5e, 0x5b, 0x7c, 0x68, 0xfd, 0x58, 0x34, 0x62, 0x6f, 0x77, 0xa9, 0x5f, 0x9b,
-	0x96, 0x6c, 0xc7, 0xd8, 0x3f, 0xe4, 0x4c, 0x48, 0x02, 0x13, 0x49, 0xea, 0xa5, 0xbd, 0x64, 0xbe,
-	0xcc, 0xd9, 0xdd, 0x2c, 0x86, 0x1d, 0x27, 0x59, 0x9b, 0x95, 0x0c, 0x27, 0xc4, 0x7f, 0x94, 0xac,
-	0xdc, 0x7f, 0x74, 0x60, 0xd6, 0x20, 0xaf, 0x07, 0x49, 0x4a, 0x3e, 0xd5, 0x37, 0xad, 0x8b, 0x27,
-	0x9b, 0x56, 0xf6, 0x34, 0x9f, 0xd4, 0xb3, 0x92, 0x59, 0x45, 0x8d, 0x58, 0x53, 0x7a, 0x07, 0xc6,
-	0x83, 0x94, 0x76, 0x92, 0xf9, 0xd2, 0xa5, 0xf2, 0xd3, 0x53, 0x97, 0xaf, 0x14, 0xf2, 0x92, 0xb5,
-	0x19, 0xc9, 0x71, 0x7c, 0x8d, 0xd1, 0x46, 0xc1, 0xc2, 0xfd, 0x57, 0xb0, 0x5f, 0x8e, 0x4d, 0x35,
-	0x79, 0x06, 0xa6, 0x92, 0xa8, 0x17, 0xfb, 0x14, 0x69, 0x37, 0x4a, 0xe6, 0x9d, 0x4b, 0x65, 0xa6,
-	0x71, 0x4c, 0x41, 0xb7, 0xcd, 0x30, 0xda, 0x38, 0xe4, 0x37, 0x1d, 0x98, 0xae, 0xd3, 0x24, 0x0d,
-	0x42, 0xce, 0x5f, 0x49, 0xfe, 0xc2, 0x68, 0x92, 0xab, 0xc1, 0x55, 0x43, 0xb9, 0xf6, 0xb8, 0x7c,
-	0x8b, 0x69, 0x6b, 0x30, 0xc1, 0x0c, 0x73, 0x66, 0x65, 0x75, 0x9a, 0xf8, 0x71, 0xd0, 0x65, 0xff,
-	0xb9, 0xaa, 0x58, 0x56, 0xb6, 0x6a, 0x40, 0x68, 0xe3, 0x91, 0x3d, 0x18, 0x67, 0x56, 0x94, 0xcc,
-	0x8f, 0x71, 0xe1, 0xaf, 0x8e, 0x20, 0xbc, 0x9c, 0x4e, 0x66, 0x9d, 0x66, 0xde, 0xd9, 0xbf, 0x04,
-	0x05, 0x0f, 0xf2, 0xa6, 0x03, 0xf3, 0xd2, 0xc4, 0x91, 0x8a, 0xa9, 0xbc, 0xdd, 0x0a, 0x52, 0xda,
-	0x0e, 0x92, 0x74, 0x7e, 0x9c, 0x0b, 0xb0, 0x74, 0x32, 0x95, 0xba, 0x16, 0x47, 0xbd, 0xee, 0xcd,
-	0x20, 0xac, 0xd7, 0x2e, 0x49, 0x4e, 0xf3, 0x2b, 0x43, 0x08, 0xe3, 0x50, 0x96, 0xe4, 0x6b, 0x0e,
-	0x5c, 0x08, 0xbd, 0x0e, 0x4d, 0xba, 0x1e, 0x5b, 0x54, 0x01, 0xae, 0xb5, 0x3d, 0x7f, 0x8f, 0x4b,
-	0x34, 0xf1, 0x70, 0x12, 0xb9, 0x52, 0xa2, 0x0b, 0x9b, 0x43, 0x49, 0xe3, 0x03, 0xd8, 0x92, 0x6f,
-	0x3a, 0x30, 0x17, 0xc5, 0xdd, 0x96, 0x17, 0xd2, 0xba, 0x82, 0x26, 0xf3, 0x93, 0xdc, 0xe2, 0x3e,
-	0x39, 0xc2, 0xfa, 0xdc, 0xca, 0xd3, 0xdc, 0x88, 0xc2, 0x20, 0x8d, 0xe2, 0x6d, 0x9a, 0xa6, 0x41,
-	0xd8, 0x4c, 0x6a, 0xe7, 0x8f, 0x0e, 0x17, 0xe6, 0xfa, 0xb0, 0xb0, 0x5f, 0x18, 0x72, 0x0f, 0xa6,
-	0x92, 0x83, 0xd0, 0xbf, 0x1d, 0x84, 0xf5, 0xe8, 0x6e, 0x32, 0x5f, 0x19, 0xd9, 0x64, 0xb7, 0x35,
-	0x35, 0x69, 0x74, 0x86, 0x3a, 0xda, 0xac, 0x06, 0x2f, 0x99, 0x51, 0xa2, 0x6a, 0xd1, 0x4b, 0x66,
-	0xd4, 0xe8, 0x01, 0x6c, 0xc9, 0x97, 0x1c, 0x98, 0x49, 0x82, 0x66, 0xe8, 0xa5, 0xbd, 0x98, 0xde,
-	0xa4, 0x07, 0xc9, 0x3c, 0x70, 0x41, 0xae, 0x8d, 0x32, 0x25, 0x16, 0xbd, 0xda, 0x79, 0x29, 0xe0,
-	0x8c, 0x3d, 0x9a, 0x60, 0x96, 0xe9, 0x20, 0xfb, 0x32, 0xda, 0x3c, 0x55, 0xac, 0x7d, 0x19, 0x5d,
-	0x1e, 0xca, 0xd2, 0xfd, 0xcb, 0x12, 0x9c, 0xcd, 0xef, 0x38, 0xe4, 0x0f, 0x1d, 0x38, 0x73, 0xe7,
-	0x6e, 0xba, 0x13, 0xed, 0xd1, 0x30, 0xa9, 0x1d, 0x30, 0x07, 0xc1, 0xdd, 0xed, 0xd4, 0xe5, 0x57,
-	0x0a, 0xdc, 0xd8, 0x16, 0x6f, 0x64, 0x59, 0x5c, 0x09, 0xd3, 0xf8, 0xa0, 0xf6, 0x1e, 0xf9, 0x32,
-	0x67, 0x6e, 0xdc, 0xde, 0xb1, 0xa1, 0x98, 0x97, 0xe8, 0xc2, 0xeb, 0x0e, 0x3c, 0x3e, 0x88, 0x04,
-	0x39, 0x0b, 0xe5, 0x3d, 0x7a, 0x20, 0xa2, 0x18, 0x64, 0x3f, 0xc9, 0xcb, 0x30, 0xbe, 0xef, 0xb5,
-	0x7b, 0x54, 0x46, 0x03, 0xab, 0x23, 0xbc, 0x85, 0x16, 0x0b, 0x05, 0xc9, 0x8f, 0x95, 0x9e, 0x73,
-	0xdc, 0xbf, 0x2a, 0xc3, 0x94, 0xb5, 0x31, 0x3c, 0x82, 0xf0, 0xa6, 0x9d, 0x09, 0x6f, 0x6e, 0x14,
-	0xb3, 0xa1, 0x0d, 0x8d, 0x6f, 0xd2, 0x5c, 0x7c, 0xb3, 0x5e, 0x10, 0xbf, 0x07, 0x06, 0x38, 0xe4,
-	0x55, 0xa8, 0x46, 0x5d, 0x16, 0xb8, 0xb2, 0xdd, 0x72, 0x6c, 0xe4, 0x95, 0xbb, 0xa5, 0x68, 0xd5,
-	0x66, 0x8e, 0x0e, 0x17, 0xaa, 0xfa, 0x2f, 0x1a, 0x2e, 0xee, 0x3f, 0x38, 0xf0, 0xb8, 0x25, 0xe0,
-	0x4a, 0x14, 0xd6, 0x03, 0xbe, 0xa2, 0x97, 0x60, 0x2c, 0x3d, 0xe8, 0xaa, 0xd0, 0x58, 0xcf, 0xd1,
-	0xce, 0x41, 0x97, 0x22, 0x87, 0xb0, 0x60, 0xb8, 0x43, 0x93, 0xc4, 0x6b, 0xd2, 0x7c, 0x30, 0xbc,
-	0x21, 0x86, 0x51, 0xc1, 0x49, 0x0c, 0xa4, 0xed, 0x25, 0xe9, 0x4e, 0xec, 0x85, 0x09, 0x27, 0xbf,
-	0x13, 0x74, 0xa8, 0x9c, 0xda, 0x9f, 0x3a, 0x99, 0xa2, 0xb0, 0x27, 0x6a, 0x4f, 0x1c, 0x1d, 0x2e,
-	0x90, 0xf5, 0x3e, 0x4a, 0x38, 0x80, 0xba, 0xfb, 0x35, 0x07, 0x9e, 0x18, 0x1c, 0xbb, 0x90, 0x0f,
-	0xc0, 0x44, 0x42, 0xe3, 0x7d, 0x1a, 0xcb, 0xb7, 0x33, 0xeb, 0xc1, 0x47, 0x51, 0x42, 0xc9, 0x12,
-	0x54, 0xb5, 0x83, 0x95, 0xef, 0x38, 0x27, 0x51, 0xab, 0xc6, 0x2b, 0x1b, 0x1c, 0x36, 0x69, 0xec,
-	0x8f, 0x8c, 0x74, 0xf4, 0xa4, 0xf1, 0x44, 0x82, 0x43, 0xdc, 0x7f, 0x72, 0xe0, 0x8c, 0x25, 0xd5,
-	0x23, 0x08, 0x62, 0xf7, 0xb2, 0x41, 0xec, 0xd5, 0x62, 0x34, 0x79, 0x48, 0x14, 0xfb, 0xa7, 0x13,
-	0x30, 0x67, 0xeb, 0x3b, 0x77, 0xbe, 0x3c, 0x6d, 0xa2, 0xdd, 0xe8, 0x45, 0x5c, 0x97, 0x13, 0x6e,
-	0xd2, 0x26, 0x31, 0x8c, 0x0a, 0xce, 0x66, 0xb0, 0xeb, 0xa5, 0x2d, 0x39, 0xdb, 0x7a, 0x06, 0xb7,
-	0xbc, 0xb4, 0x85, 0x1c, 0x42, 0x3e, 0x0e, 0xb3, 0xa9, 0x17, 0x37, 0x69, 0x8a, 0x74, 0x3f, 0x48,
-	0x94, 0xa5, 0x54, 0x6b, 0x4f, 0x48, 0xdc, 0xd9, 0x9d, 0x0c, 0x14, 0x73, 0xd8, 0x24, 0x84, 0xb1,
-	0x16, 0x6d, 0x77, 0x64, 0xf0, 0xb2, 0x55, 0x90, 0x61, 0xf3, 0x17, 0xbd, 0x4e, 0xdb, 0x9d, 0x5a,
-	0x85, 0xc9, 0xcb, 0x7e, 0x21, 0xe7, 0x43, 0x7e, 0xcd, 0x81, 0xea, 0x5e, 0x2f, 0x49, 0xa3, 0x4e,
-	0xf0, 0x1a, 0x9d, 0xaf, 0x70, 0xae, 0x2f, 0x16, 0xc9, 0xf5, 0xa6, 0x22, 0x2e, 0xcc, 0x5c, 0xff,
-	0x45, 0xc3, 0x96, 0xbc, 0x06, 0x93, 0x7b, 0x49, 0x14, 0x86, 0x94, 0x85, 0x23, 0x4c, 0x82, 0xed,
-	0x42, 0x25, 0x10, 0xa4, 0x6b, 0x53, 0x6c, 0x49, 0xe5, 0x1f, 0x54, 0x0c, 0xf9, 0x04, 0xd4, 0x83,
-	0x98, 0xfa, 0x69, 0x14, 0x1f, 0xcc, 0x43, 0xf1, 0x13, 0xb0, 0xaa, 0x88, 0x8b, 0x09, 0xd0, 0x7f,
-	0xd1, 0xb0, 0x25, 0xfb, 0x30, 0xd1, 0x6d, 0xf7, 0x9a, 0x41, 0x38, 0x3f, 0xc5, 0x05, 0xc0, 0x22,
-	0x05, 0xd8, 0xe2, 0x94, 0x6b, 0xc0, 0x5c, 0x88, 0xf8, 0x8d, 0x92, 0x1b, 0x79, 0x0a, 0xc6, 0xfd,
-	0x96, 0x17, 0xa7, 0xf3, 0xd3, 0x5c, 0x49, 0xb5, 0xd5, 0xac, 0xb0, 0x41, 0x14, 0x30, 0xf7, 0xaf,
-	0x1d, 0xb8, 0x30, 0xfc, 0xad, 0x84, 0xf9, 0xf8, 0xbd, 0x38, 0x11, 0xde, 0xb8, 0x62, 0x9b, 0x0f,
-	0x1f, 0x46, 0x05, 0x27, 0x9f, 0x87, 0xc9, 0x3b, 0x72, 0x9d, 0x4b, 0xc5, 0xaf, 0xf3, 0x0d, 0xb9,
-	0xce, 0x9a, 0xff, 0x0d, 0xb5, 0xd6, 0x92, 0xa9, 0x7b, 0x58, 0x86, 0xf3, 0x03, 0xcd, 0x82, 0x2c,
-	0x02, 0xf0, 0xf0, 0xe1, 0x6a, 0xc0, 0x32, 0x3b, 0x91, 0xcb, 0xce, 0xb2, 0xdd, 0xfe, 0x25, 0x3d,
-	0x8a, 0x16, 0x06, 0xf9, 0x2c, 0x40, 0xd7, 0x8b, 0xbd, 0x0e, 0x4d, 0x69, 0xac, 0x7c, 0xd7, 0xf5,
-	0x11, 0x5e, 0x86, 0x09, 0xb1, 0xa5, 0x08, 0x9a, 0x58, 0x43, 0x0f, 0x25, 0x68, 0xf1, 0x63, 0x99,
-	0x6b, 0x4c, 0xdb, 0xd4, 0x4b, 0xe8, 0xa6, 0xf1, 0xe7, 0x3a, 0x73, 0x45, 0x03, 0x42, 0x1b, 0x8f,
-	0x6d, 0x2c, 0xfc, 0x15, 0x12, 0xe9, 0x93, 0xf4, 0xc6, 0xc2, 0x5f, 0x32, 0x41, 0x09, 0x25, 0x6f,
-	0x38, 0x30, 0xdb, 0x08, 0xda, 0xd4, 0x70, 0x97, 0xa9, 0xe6, 0xfa, 0x88, 0x6f, 0x78, 0xd5, 0x26,
-	0x6a, 0x5c, 0x62, 0x66, 0x38, 0xc1, 0x1c, 0x6f, 0xa6, 0x60, 0xfb, 0x34, 0xe6, 0xbe, 0x74, 0x22,
-	0xeb, 0x9f, 0x5f, 0x12, 0xc3, 0xa8, 0xe0, 0xee, 0xd7, 0x4a, 0x30, 0x3f, 0x4c, 0x2f, 0x48, 0x17,
-	0x26, 0xe9, 0xbd, 0xf4, 0x25, 0x2f, 0x4e, 0x64, 0xf4, 0x3c, 0x4a, 0xfa, 0x25, 0x89, 0xbe, 0xe4,
-	0xc5, 0x46, 0x9c, 0x2b, 0x82, 0x3a, 0x2a, 0x36, 0xa4, 0x09, 0x63, 0x69, 0xdb, 0x2b, 0xa2, 0x40,
-	0x63, 0xb1, 0x33, 0xc1, 0xce, 0xfa, 0x72, 0x82, 0x9c, 0x01, 0x79, 0x12, 0xc6, 0xda, 0xc1, 0x2e,
-	0x0b, 0x07, 0x99, 0xe2, 0x72, 0x1f, 0xbf, 0x1e, 0xec, 0x26, 0xc8, 0x47, 0xdd, 0xef, 0x3b, 0x03,
-	0x66, 0x45, 0x3a, 0x42, 0xa6, 0x4b, 0x34, 0xdc, 0x0f, 0xe2, 0x28, 0xec, 0xd0, 0x30, 0xcd, 0xd7,
-	0x1a, 0xaf, 0x18, 0x10, 0xda, 0x78, 0xe4, 0x57, 0x07, 0x18, 0xc0, 0x28, 0x65, 0x36, 0x29, 0xce,
-	0x89, 0x6d, 0xc0, 0xfd, 0x9b, 0xf2, 0x00, 0xaf, 0xa4, 0x77, 0x17, 0x72, 0x19, 0x80, 0x45, 0x34,
-	0x5b, 0x31, 0x6d, 0x04, 0xf7, 0xe4, 0x5b, 0x69, 0x92, 0x9b, 0x1a, 0x82, 0x16, 0x96, 0x7a, 0x66,
-	0xbb, 0xd7, 0x60, 0xcf, 0x94, 0xfa, 0x9f, 0x11, 0x10, 0xb4, 0xb0, 0xc8, 0xb3, 0x30, 0x11, 0x74,
-	0xbc, 0x26, 0x55, 0x73, 0xff, 0x24, 0xb3, 0xa7, 0x35, 0x3e, 0x72, 0xff, 0x70, 0x61, 0x56, 0x0b,
-	0xc4, 0x87, 0x50, 0xe2, 0x92, 0x6f, 0x39, 0x30, 0xed, 0x47, 0x9d, 0x4e, 0x14, 0xae, 0x7b, 0xbb,
-	0xb4, 0xad, 0x6a, 0x49, 0xcd, 0x77, 0x65, 0xe3, 0x5d, 0x5c, 0xb1, 0x38, 0x89, 0xac, 0x4e, 0x97,
-	0xc7, 0x6c, 0x10, 0x66, 0x44, 0xb2, 0xcd, 0x6e, 0xfc, 0xc1, 0x66, 0x77, 0xe1, 0x13, 0x30, 0xd7,
-	0xc7, 0x63, 0x40, 0xda, 0xf7, 0xb8, 0x9d, 0xf6, 0x55, 0xed, 0x84, 0xed, 0x77, 0x1d, 0x78, 0xcf,
-	0x90, 0x7d, 0x4b, 0x47, 0xad, 0xce, 0xb0, 0xa8, 0x95, 0x7c, 0x06, 0xca, 0x34, 0xdc, 0x97, 0x4a,
-	0xb8, 0x32, 0xc2, 0x1c, 0x5e, 0x09, 0xf7, 0xc5, 0xfc, 0x4c, 0x1e, 0x1d, 0x2e, 0x94, 0xaf, 0x84,
-	0xfb, 0xc8, 0x08, 0xbb, 0x5f, 0x9e, 0xc8, 0x44, 0xc5, 0xdb, 0x2a, 0x05, 0xe3, 0x52, 0xca, 0x98,
-	0x78, 0xbd, 0xc8, 0xa5, 0xb3, 0x42, 0x7e, 0x51, 0x3d, 0x95, 0xbc, 0xc8, 0xeb, 0x0e, 0xaf, 0x59,
-	0xaa, 0x54, 0x41, 0xee, 0xa2, 0xef, 0x42, 0xfd, 0xd4, 0x2e, 0x83, 0xaa, 0x41, 0xb4, 0x59, 0x33,
-	0xf5, 0xe8, 0x8a, 0xf2, 0x81, 0xdc, 0x7f, 0xb4, 0x7a, 0xa8, 0xaa, 0xa6, 0x82, 0x93, 0x1e, 0x40,
-	0x72, 0x10, 0xfa, 0x5b, 0x51, 0x3b, 0xf0, 0x0f, 0x64, 0xe6, 0x38, 0x6a, 0xe9, 0x4b, 0x10, 0x13,
-	0x7b, 0xb4, 0xf9, 0x8f, 0x16, 0x23, 0xf2, 0x0d, 0x07, 0xe6, 0x82, 0x66, 0x18, 0xc5, 0x74, 0x35,
-	0x68, 0x34, 0x68, 0x4c, 0x43, 0x9f, 0xaa, 0x9d, 0x6c, 0x67, 0x04, 0xf6, 0xaa, 0x6a, 0xb3, 0x96,
-	0xa7, 0x5d, 0x7b, 0xaf, 0x9c, 0x82, 0xb9, 0x3e, 0x10, 0xf6, 0x4b, 0x42, 0x3c, 0x18, 0x0b, 0xc2,
-	0x46, 0x24, 0x8b, 0xa6, 0x9f, 0x18, 0x41, 0xa2, 0xb5, 0xb0, 0x11, 0x19, 0xcb, 0x60, 0xff, 0x90,
-	0x93, 0x26, 0xeb, 0xf0, 0x78, 0x2c, 0x33, 0x8b, 0xeb, 0x41, 0xc2, 0xc2, 0xb5, 0xf5, 0xa0, 0x13,
-	0xa4, 0x3c, 0xbb, 0x28, 0xd7, 0xe6, 0x8f, 0x0e, 0x17, 0x1e, 0xc7, 0x01, 0x70, 0x1c, 0xf8, 0x94,
-	0xfb, 0xdf, 0x95, 0x6c, 0xfa, 0x24, 0xca, 0x02, 0xaf, 0x41, 0x35, 0xd6, 0x35, 0x57, 0xb1, 0xb1,
-	0xae, 0x15, 0x30, 0xbb, 0xb2, 0x18, 0xa1, 0x33, 0x5a, 0x53, 0x5d, 0x35, 0xec, 0xd8, 0x06, 0xcb,
-	0x16, 0x5c, 0xda, 0xc1, 0xa8, 0x3a, 0x25, 0x59, 0x9a, 0x8a, 0xcb, 0x41, 0xe8, 0x23, 0x67, 0x40,
-	0x22, 0x98, 0x68, 0x51, 0xaf, 0x9d, 0xb6, 0x64, 0x59, 0xe0, 0xda, 0x48, 0x91, 0x10, 0x23, 0x94,
-	0x2f, 0xb6, 0x88, 0x51, 0x94, 0x6c, 0x48, 0x0f, 0x26, 0x5b, 0x62, 0xee, 0xe5, 0xde, 0x70, 0x63,
-	0xa4, 0x39, 0xcd, 0xac, 0xa6, 0x31, 0x55, 0x39, 0x80, 0x8a, 0x17, 0xf9, 0x75, 0x07, 0xc0, 0x57,
-	0x55, 0x16, 0x65, 0x2c, 0xb7, 0x8a, 0xf1, 0x2f, 0xba, 0x7a, 0x63, 0x36, 0x55, 0x3d, 0x94, 0xa0,
-	0xc5, 0x96, 0xbc, 0x02, 0xd3, 0x31, 0xf5, 0xa3, 0xd0, 0x0f, 0xda, 0xb4, 0xbe, 0x9c, 0xf2, 0xb0,
-	0xef, 0x74, 0xa5, 0x98, 0xb3, 0x6c, 0x73, 0x43, 0x8b, 0x06, 0x66, 0x28, 0x92, 0x2f, 0x3b, 0x30,
-	0xab, 0xcb, 0x4c, 0x6c, 0x29, 0xa8, 0xcc, 0xb8, 0xd7, 0x8a, 0xa8, 0x68, 0x71, 0x82, 0x35, 0xc2,
-	0x62, 0xdb, 0xec, 0x18, 0xe6, 0x98, 0x92, 0x97, 0x01, 0xa2, 0x5d, 0x5e, 0xcf, 0x61, 0xef, 0x59,
-	0x39, 0xf5, 0x7b, 0xce, 0x8a, 0x8a, 0xa4, 0xa2, 0x80, 0x16, 0x35, 0x72, 0x13, 0x40, 0xd8, 0xc9,
-	0xce, 0x41, 0x97, 0xf2, 0xc4, 0xba, 0x5a, 0xfb, 0x90, 0x9a, 0xf9, 0x6d, 0x0d, 0xb9, 0x7f, 0xb8,
-	0xd0, 0x9f, 0x14, 0xf1, 0x42, 0x9a, 0xf5, 0x38, 0xb9, 0x07, 0x93, 0x49, 0xaf, 0xd3, 0xf1, 0x74,
-	0x8e, 0xbc, 0x51, 0xd0, 0x86, 0x27, 0x88, 0x1a, 0x95, 0x94, 0x03, 0xa8, 0xd8, 0xb9, 0x21, 0x90,
-	0x7e, 0x7c, 0xf2, 0x2c, 0x4c, 0xd3, 0x7b, 0x29, 0x8d, 0x43, 0xaf, 0xfd, 0x22, 0xae, 0xab, 0x94,
-	0x8d, 0x2f, 0xfb, 0x15, 0x6b, 0x1c, 0x33, 0x58, 0xc4, 0xd5, 0xd1, 0x5a, 0x89, 0xe3, 0x83, 0x89,
-	0xd6, 0x54, 0x6c, 0xe6, 0xfe, 0x46, 0x29, 0xb3, 0xdb, 0xef, 0xc4, 0x94, 0x92, 0x36, 0x8c, 0x87,
-	0x51, 0x5d, 0xfb, 0xb7, 0x6b, 0x05, 0xf8, 0xb7, 0xcd, 0xa8, 0x6e, 0x1d, 0xfa, 0xb1, 0x7f, 0x09,
-	0x0a, 0x26, 0xfc, 0x6c, 0x44, 0x9d, 0x20, 0x71, 0x80, 0x0c, 0x6d, 0x0a, 0x63, 0xab, 0xcf, 0x46,
-	0x6e, 0xd9, 0x5c, 0x30, 0xcb, 0xd4, 0xfd, 0x81, 0x93, 0xc9, 0x96, 0x6f, 0x7b, 0xa9, 0xdf, 0xba,
-	0xb2, 0xcf, 0x82, 0xff, 0x9b, 0x99, 0xea, 0xeb, 0xcf, 0xdb, 0xd5, 0xd7, 0xfb, 0x87, 0x0b, 0x1f,
-	0x1c, 0xd6, 0x06, 0x71, 0x97, 0x51, 0x58, 0xe4, 0x24, 0xac, 0x42, 0xed, 0xe7, 0x60, 0xca, 0x92,
-	0x58, 0xba, 0xf2, 0xa2, 0xea, 0x80, 0x3a, 0x8e, 0xb1, 0x06, 0xd1, 0xe6, 0xe7, 0xfe, 0xb6, 0x03,
-	0x93, 0x35, 0xcf, 0xdf, 0x8b, 0x1a, 0x0d, 0xf2, 0x61, 0xa8, 0xd4, 0x7b, 0xb2, 0xc0, 0x2d, 0xde,
-	0x4d, 0x97, 0x2e, 0x57, 0xe5, 0x38, 0x6a, 0x0c, 0xa6, 0x4c, 0x0d, 0xcf, 0x4f, 0xa3, 0x98, 0xcb,
-	0x5c, 0x16, 0xca, 0x74, 0x95, 0x8f, 0xa0, 0x84, 0xb0, 0xec, 0xaa, 0xe3, 0xdd, 0x53, 0x0f, 0xe7,
-	0x33, 0xf5, 0x0d, 0x03, 0x42, 0x1b, 0xcf, 0xfd, 0xe6, 0x38, 0x4c, 0xca, 0xd3, 0xa3, 0x13, 0x97,
-	0x83, 0x55, 0x9c, 0x5c, 0x1a, 0x1a, 0x27, 0x77, 0x61, 0xc2, 0xe7, 0x0d, 0x26, 0x72, 0x13, 0x1b,
-	0xa5, 0x60, 0x21, 0xa5, 0x13, 0x0d, 0x2b, 0x46, 0x26, 0xf1, 0x1f, 0x25, 0x1f, 0xf2, 0xa6, 0x03,
-	0x67, 0x7c, 0x96, 0xd8, 0xf9, 0xc6, 0xcf, 0x8e, 0x8d, 0x7c, 0x44, 0xb2, 0x92, 0xa5, 0x68, 0xce,
-	0xa8, 0x72, 0x00, 0xcc, 0xf3, 0x26, 0xcf, 0xc3, 0x8c, 0x98, 0xad, 0x97, 0x32, 0x99, 0x8d, 0x39,
-	0x2b, 0xb4, 0x81, 0x98, 0xc5, 0x25, 0x8b, 0x22, 0x3d, 0xe4, 0xb5, 0xf4, 0x84, 0x47, 0x6d, 0xb2,
-	0x46, 0xa4, 0x8b, 0xed, 0x09, 0x5a, 0x18, 0x24, 0x06, 0x12, 0xd3, 0x46, 0x4c, 0x93, 0x16, 0xd2,
-	0x57, 0x7b, 0x34, 0x49, 0xb9, 0x8f, 0x9f, 0x7c, 0xb8, 0x63, 0x05, 0xec, 0xa3, 0x84, 0x03, 0xa8,
-	0x93, 0x96, 0x8c, 0x29, 0x2b, 0x23, 0x5b, 0x91, 0x5c, 0xe0, 0x61, 0xa1, 0xa5, 0xfb, 0x3f, 0x0e,
-	0x9c, 0x55, 0x4a, 0xe0, 0xf9, 0x2d, 0xca, 0x40, 0xe4, 0xe3, 0x30, 0xab, 0x83, 0xb3, 0x95, 0xa8,
-	0x27, 0xeb, 0x09, 0x65, 0x53, 0xea, 0xc1, 0x0c, 0x14, 0x73, 0xd8, 0x64, 0x09, 0xaa, 0x4c, 0x22,
-	0xf1, 0xa8, 0xb0, 0x2a, 0x1d, 0x00, 0x2e, 0x6f, 0xad, 0xc9, 0xa7, 0x0c, 0x0e, 0x89, 0x60, 0xae,
-	0xed, 0x25, 0x29, 0x97, 0x80, 0x85, 0x6b, 0x0f, 0x79, 0x72, 0xc3, 0xcf, 0xf1, 0xd7, 0xf3, 0x84,
-	0xb0, 0x9f, 0xb6, 0xfb, 0x67, 0x65, 0x98, 0xc9, 0xe8, 0x3e, 0x73, 0x1a, 0xbd, 0x84, 0x6d, 0x31,
-	0x3a, 0x47, 0xd5, 0x4e, 0xe3, 0x45, 0x39, 0x8e, 0x1a, 0x83, 0x61, 0x77, 0xbd, 0x24, 0xb9, 0x1b,
-	0xc5, 0x75, 0x69, 0xa9, 0x1a, 0x7b, 0x4b, 0x8e, 0xa3, 0xc6, 0x60, 0xee, 0x63, 0x97, 0x7a, 0x31,
-	0x8d, 0xf9, 0x19, 0x67, 0xde, 0x7d, 0xd4, 0x0c, 0x08, 0x6d, 0x3c, 0x6e, 0x76, 0x69, 0x3b, 0x59,
-	0x69, 0x07, 0x34, 0x4c, 0x85, 0x98, 0x05, 0x98, 0xdd, 0xce, 0xfa, 0xb6, 0x4d, 0xd1, 0x98, 0x5d,
-	0x0e, 0x80, 0x79, 0xde, 0xe4, 0x8b, 0x0e, 0xcc, 0x78, 0x77, 0x13, 0xd3, 0xe1, 0xc6, 0xed, 0x6e,
-	0x34, 0x07, 0x94, 0xe9, 0x98, 0xab, 0xcd, 0x31, 0xeb, 0xcd, 0x0c, 0x61, 0x96, 0xa3, 0xfb, 0xad,
-	0x32, 0x4c, 0x59, 0x3a, 0x3d, 0xd0, 0x35, 0x39, 0x3f, 0x4e, 0xae, 0xa9, 0x74, 0x0a, 0xd7, 0xf4,
-	0x59, 0xa8, 0xfa, 0xca, 0x08, 0x0b, 0xe8, 0x79, 0xcb, 0xdb, 0xb5, 0x31, 0x42, 0x3d, 0x84, 0x86,
-	0x21, 0xb9, 0x06, 0x73, 0x16, 0x19, 0x69, 0xbd, 0x63, 0xdc, 0x7a, 0x75, 0x46, 0xbc, 0x9c, 0x47,
-	0xc0, 0xfe, 0x67, 0xdc, 0xbf, 0x73, 0xf4, 0x1a, 0x3d, 0x82, 0xa3, 0xc7, 0x66, 0xf6, 0xe8, 0xb1,
-	0x36, 0xfa, 0x84, 0x0d, 0x39, 0x76, 0xdc, 0x84, 0xc9, 0x95, 0xa8, 0xd3, 0xf1, 0xc2, 0x3a, 0x79,
-	0x3f, 0x4c, 0xfa, 0xe2, 0xa7, 0x8c, 0x58, 0xf9, 0xa1, 0x94, 0x84, 0xa2, 0x82, 0x91, 0x27, 0x61,
-	0xcc, 0x8b, 0x9b, 0x2a, 0x4a, 0xe5, 0xf5, 0xdc, 0xe5, 0xb8, 0x99, 0x20, 0x1f, 0x75, 0xdf, 0x2c,
-	0x01, 0xac, 0x44, 0x9d, 0xae, 0x17, 0xd3, 0xfa, 0x4e, 0xf4, 0x7f, 0xbe, 0x14, 0xe5, 0xbe, 0xe1,
-	0x00, 0x61, 0xf3, 0x11, 0x85, 0x34, 0x34, 0x15, 0x64, 0xb6, 0x99, 0xf8, 0x6a, 0x54, 0x7a, 0x66,
-	0xa3, 0xc7, 0x0a, 0x80, 0x06, 0xe7, 0x04, 0x11, 0xd4, 0x53, 0xaa, 0x82, 0x59, 0xce, 0x9e, 0x97,
-	0xf1, 0x03, 0x14, 0x59, 0xd0, 0x74, 0xbf, 0x5a, 0x82, 0x27, 0x84, 0xd3, 0xd9, 0xf0, 0x42, 0xaf,
-	0x49, 0x3b, 0x4c, 0xaa, 0x93, 0xd6, 0x32, 0x5f, 0x61, 0x1b, 0x78, 0xa0, 0xce, 0xc7, 0x46, 0xd2,
-	0x49, 0xa1, 0x4b, 0x42, 0x7b, 0xd6, 0xc2, 0x20, 0x45, 0x4e, 0x99, 0x74, 0xa1, 0xa2, 0x1a, 0x90,
-	0xa5, 0xab, 0x28, 0x82, 0x8b, 0x36, 0xb4, 0x6b, 0x92, 0x36, 0x6a, 0x2e, 0xee, 0x77, 0x1d, 0xc8,
-	0xfb, 0x3f, 0x1e, 0xd5, 0x8a, 0x16, 0x96, 0x7c, 0x54, 0x9b, 0x6d, 0x3a, 0x39, 0x45, 0x1b, 0xc7,
-	0xa7, 0x60, 0xca, 0x4b, 0x53, 0xda, 0xe9, 0x8a, 0x40, 0xab, 0xfc, 0x70, 0xc9, 0xf4, 0x46, 0x54,
-	0x0f, 0x1a, 0x01, 0x0f, 0xb0, 0x6c, 0x72, 0xee, 0x0b, 0x50, 0x51, 0xe5, 0xe1, 0x13, 0x2c, 0xe3,
-	0x53, 0x99, 0x52, 0xf7, 0x10, 0x45, 0x79, 0xa3, 0x04, 0xb3, 0xd7, 0xc2, 0xde, 0xd6, 0xb5, 0xad,
-	0xde, 0x6e, 0x3b, 0xf0, 0x6f, 0xd2, 0x03, 0xf6, 0xdc, 0x1e, 0x3d, 0x58, 0x5b, 0x95, 0xa4, 0xf5,
-	0x73, 0x37, 0xd9, 0x20, 0x0a, 0x18, 0x8b, 0x0a, 0x1a, 0x41, 0xd8, 0xa4, 0x71, 0x37, 0x0e, 0x64,
-	0x9c, 0x64, 0x45, 0x05, 0x57, 0x0d, 0x08, 0x6d, 0x3c, 0x46, 0x3b, 0xba, 0x1b, 0xd2, 0x38, 0xaf,
-	0xbc, 0xb7, 0xd8, 0x20, 0x0a, 0x18, 0x43, 0x4a, 0xe3, 0x5e, 0x92, 0xca, 0x23, 0x42, 0x8d, 0xb4,
-	0xc3, 0x06, 0x51, 0xc0, 0xd8, 0xa2, 0x24, 0xbd, 0x5d, 0x5e, 0x56, 0xc8, 0x1d, 0x0d, 0x6c, 0x8b,
-	0x61, 0x54, 0x70, 0x86, 0xba, 0x47, 0x0f, 0x56, 0x99, 0x07, 0xcf, 0x1d, 0xde, 0xdd, 0x14, 0xc3,
-	0xa8, 0xe0, 0xee, 0x91, 0x03, 0x24, 0x3b, 0x1d, 0x8f, 0x60, 0x13, 0x08, 0xb3, 0x9b, 0xc0, 0x28,
-	0xe5, 0x9f, 0xac, 0xec, 0x43, 0xf6, 0x82, 0x3f, 0x70, 0x60, 0xda, 0x2e, 0x00, 0x92, 0x66, 0xce,
-	0x10, 0x6e, 0x65, 0x0d, 0xe1, 0xfe, 0xe1, 0xc2, 0x2f, 0x0e, 0xba, 0x96, 0xd1, 0x0c, 0xd2, 0xa8,
-	0x9b, 0x7c, 0x84, 0x86, 0xcd, 0x20, 0xa4, 0x3c, 0xbb, 0x16, 0x85, 0xc3, 0x4c, 0x75, 0x71, 0x25,
-	0xaa, 0xd3, 0x87, 0xb0, 0x24, 0xf7, 0x36, 0xcc, 0xf5, 0x1d, 0xd7, 0x9e, 0x40, 0xe9, 0x8f, 0xed,
-	0x8e, 0x71, 0xdf, 0x74, 0x60, 0x26, 0x73, 0xd4, 0x5d, 0x90, 0x29, 0x71, 0x93, 0x88, 0x78, 0xd5,
-	0x38, 0x0e, 0x42, 0x91, 0xdf, 0x56, 0x2c, 0x93, 0x30, 0x20, 0xb4, 0xf1, 0xdc, 0x0d, 0xe0, 0x29,
-	0x4d, 0x51, 0x06, 0xfd, 0x02, 0x54, 0x18, 0x39, 0xb6, 0xe0, 0x45, 0x91, 0x8c, 0xa0, 0xa2, 0x5a,
-	0x1c, 0x89, 0x0b, 0xe5, 0xc0, 0x53, 0x29, 0x95, 0x56, 0xea, 0xb5, 0x24, 0xe9, 0x71, 0x77, 0xc5,
-	0x80, 0xe4, 0x29, 0x28, 0xd3, 0x7b, 0xdd, 0x7c, 0xee, 0x74, 0xe5, 0x5e, 0x37, 0x88, 0x69, 0xc2,
-	0x90, 0xe8, 0xbd, 0x2e, 0xb9, 0x00, 0xa5, 0xa0, 0x2e, 0xdd, 0x00, 0x48, 0x9c, 0xd2, 0xda, 0x2a,
-	0x96, 0x82, 0xba, 0xdb, 0x83, 0xaa, 0xee, 0xa9, 0x24, 0x2d, 0x65, 0x1d, 0xce, 0xc8, 0x67, 0x6b,
-	0x8a, 0xe8, 0x10, 0xbb, 0xe8, 0x01, 0x98, 0x33, 0xee, 0xa2, 0xb4, 0xe2, 0x12, 0x8c, 0xf9, 0x51,
-	0x9d, 0x4a, 0x75, 0xd0, 0x64, 0xb8, 0x59, 0x70, 0x88, 0x7b, 0x1b, 0x66, 0x6f, 0x86, 0xd1, 0xdd,
-	0x90, 0xf9, 0xaa, 0xab, 0x01, 0x6d, 0xd7, 0x19, 0xe1, 0x06, 0xfb, 0x91, 0xf7, 0xc0, 0x1c, 0x8a,
-	0x02, 0xa6, 0xdb, 0x0f, 0x4b, 0xc3, 0xda, 0x0f, 0xdd, 0xaf, 0x38, 0x70, 0x36, 0x7f, 0xa6, 0xfd,
-	0x23, 0x8b, 0x48, 0xbe, 0xc0, 0x84, 0x51, 0xc7, 0xc1, 0xb7, 0xba, 0xa2, 0xc8, 0xfe, 0x1c, 0x4c,
-	0xef, 0xf6, 0x82, 0x76, 0x5d, 0xfe, 0x97, 0xf2, 0xe8, 0x93, 0xe1, 0x9a, 0x05, 0xc3, 0x0c, 0x26,
-	0xb9, 0x0c, 0xb0, 0x1b, 0x84, 0x5e, 0x7c, 0xb0, 0x65, 0xac, 0x5d, 0x97, 0xf4, 0x6b, 0x1a, 0x82,
-	0x16, 0x96, 0xfb, 0x56, 0x19, 0x4c, 0x8b, 0x27, 0x69, 0xc8, 0x73, 0x1b, 0x67, 0xe4, 0x34, 0x90,
-	0x25, 0xe6, 0xa6, 0x93, 0xb4, 0x92, 0x3b, 0xb6, 0xf9, 0x92, 0x03, 0x53, 0x2c, 0xe8, 0x09, 0xbc,
-	0x94, 0xd6, 0x6b, 0x07, 0x32, 0xaa, 0xda, 0x28, 0xa2, 0xc6, 0xbf, 0x26, 0xc8, 0x46, 0xb1, 0x71,
-	0x33, 0x6b, 0x86, 0x13, 0xda, 0x6c, 0xc9, 0xa7, 0x65, 0x55, 0xa6, 0x5c, 0xcc, 0x49, 0x5f, 0x25,
-	0x77, 0xca, 0xd7, 0x81, 0xf1, 0x98, 0xa6, 0xb1, 0x3a, 0x5a, 0xbd, 0x3e, 0x52, 0x99, 0x38, 0x8d,
-	0x0f, 0xb6, 0x53, 0x16, 0xb6, 0x35, 0xad, 0x2d, 0x8c, 0x0f, 0xa3, 0xe0, 0xe2, 0x26, 0x40, 0xfa,
-	0x67, 0xe1, 0x94, 0x65, 0x90, 0x25, 0xa8, 0x7a, 0xbd, 0x34, 0xea, 0xb0, 0x09, 0xe2, 0xab, 0x52,
-	0xb1, 0x0a, 0x3d, 0x0a, 0x80, 0x06, 0xc7, 0x7d, 0x7d, 0x1c, 0x72, 0x67, 0x29, 0xa4, 0x67, 0xf7,
-	0x23, 0x3b, 0x05, 0xf6, 0x23, 0x6b, 0x49, 0x06, 0xf5, 0x24, 0xb3, 0xb4, 0xb1, 0xdb, 0xf2, 0x12,
-	0x65, 0x94, 0x2f, 0xa8, 0x39, 0xda, 0x62, 0x83, 0xf7, 0x0f, 0x17, 0x7e, 0xe9, 0x64, 0xdb, 0x35,
-	0xd3, 0xcf, 0x25, 0xd1, 0x70, 0x61, 0x58, 0x73, 0x1a, 0x28, 0xe8, 0xdb, 0x1b, 0x76, 0xf9, 0x98,
-	0xd0, 0xf7, 0xf3, 0xe2, 0x84, 0x1d, 0x69, 0xd2, 0x6b, 0xa7, 0x52, 0x0d, 0x36, 0x8b, 0xb2, 0x2a,
-	0x41, 0xd5, 0x1c, 0xb5, 0x8b, 0xff, 0x68, 0x71, 0x24, 0x9f, 0x84, 0x6a, 0x92, 0x7a, 0x71, 0xfa,
-	0x90, 0xa7, 0x75, 0x7a, 0xc2, 0xb7, 0x15, 0x11, 0x34, 0xf4, 0xc8, 0xcb, 0x00, 0x8d, 0x20, 0x0c,
-	0x92, 0xd6, 0x43, 0xd6, 0x4f, 0xb9, 0xe0, 0x57, 0x35, 0x05, 0xb4, 0xa8, 0x31, 0x57, 0xc6, 0x95,
-	0x5a, 0xd4, 0x2c, 0x2a, 0x7c, 0xd7, 0xd4, 0xae, 0x0c, 0x35, 0x04, 0x2d, 0x2c, 0xf7, 0xf3, 0x70,
-	0x2e, 0x7f, 0xe5, 0x47, 0x86, 0xee, 0xcd, 0x38, 0xea, 0x75, 0xf3, 0x1b, 0x07, 0xbf, 0x18, 0x82,
-	0x02, 0xc6, 0x1c, 0xfa, 0x5e, 0x10, 0xd6, 0xf3, 0x0e, 0xfd, 0x66, 0x10, 0xd6, 0x91, 0x43, 0x4e,
-	0xd0, 0xa4, 0xfd, 0xe7, 0x0e, 0x5c, 0x3a, 0xee, 0x66, 0x12, 0x79, 0x12, 0xc6, 0xee, 0x7a, 0x71,
-	0x28, 0x5b, 0x32, 0xb9, 0xc7, 0xb8, 0xed, 0xc5, 0x21, 0xf2, 0x51, 0xb2, 0x0f, 0x13, 0xa2, 0x1f,
-	0x41, 0x86, 0xbd, 0x9b, 0x05, 0x5e, 0x92, 0x62, 0xb1, 0xaf, 0xce, 0xe6, 0x44, 0x23, 0x04, 0x4a,
-	0x6e, 0xee, 0x0d, 0x20, 0xb7, 0xf6, 0x69, 0x1c, 0x07, 0x75, 0xab, 0x7b, 0x82, 0x3c, 0x0b, 0xd3,
-	0x77, 0xb6, 0x6f, 0x6d, 0x6e, 0x45, 0x41, 0xc8, 0xbb, 0xc9, 0xac, 0xb3, 0xbc, 0x1b, 0xd6, 0x38,
-	0x66, 0xb0, 0xdc, 0x6f, 0x97, 0x60, 0xca, 0xba, 0x40, 0x77, 0x82, 0x98, 0x21, 0x77, 0xe1, 0xaf,
-	0x74, 0xc2, 0x0b, 0x7f, 0x4f, 0x43, 0xa5, 0x1b, 0xb5, 0x03, 0x3f, 0xd0, 0x4d, 0x5e, 0xd3, 0xbc,
-	0x5c, 0x2b, 0xc7, 0x50, 0x43, 0x49, 0x0a, 0x55, 0x7d, 0x2b, 0x46, 0x1e, 0xdb, 0x17, 0x12, 0x32,
-	0x69, 0xfb, 0x30, 0xb7, 0x5d, 0x0c, 0x23, 0xe2, 0xc2, 0x04, 0x57, 0x2e, 0x71, 0x5c, 0x2f, 0x0f,
-	0x35, 0xb9, 0xd6, 0x25, 0x28, 0x21, 0xee, 0xf7, 0x4b, 0x50, 0x45, 0xda, 0x8d, 0x56, 0x62, 0x5a,
-	0x4f, 0xc8, 0xfb, 0xa0, 0xdc, 0x8b, 0xdb, 0x72, 0xa6, 0xa6, 0x24, 0xf1, 0xf2, 0x8b, 0xb8, 0x8e,
-	0x6c, 0x3c, 0xe3, 0xca, 0x4b, 0xa7, 0xaa, 0x68, 0x97, 0x8f, 0xad, 0x68, 0x3f, 0x0f, 0x33, 0x49,
-	0xd2, 0xda, 0x8a, 0x83, 0x7d, 0x2f, 0x65, 0xaa, 0x22, 0xf3, 0x4c, 0x53, 0xe6, 0xdc, 0xbe, 0x6e,
-	0x80, 0x98, 0xc5, 0x25, 0xd7, 0x60, 0xce, 0x94, 0x96, 0x69, 0x9c, 0xf2, 0xb4, 0x52, 0x64, 0xa0,
-	0xba, 0xd0, 0x68, 0x8a, 0xd1, 0x12, 0x01, 0xfb, 0x9f, 0x21, 0xab, 0x70, 0x36, 0x33, 0xc8, 0x04,
-	0x11, 0xe9, 0xe9, 0xbc, 0xa4, 0x73, 0x36, 0x43, 0x87, 0xc9, 0xd2, 0xf7, 0x84, 0xfb, 0xb6, 0x03,
-	0x33, 0x7a, 0x52, 0x1f, 0x41, 0xae, 0x1a, 0x64, 0x73, 0xd5, 0xd5, 0x91, 0xf6, 0x79, 0x29, 0xf6,
-	0x90, 0x70, 0xfc, 0xf7, 0x27, 0x00, 0xf8, 0x9d, 0xdd, 0x80, 0xb7, 0x85, 0x5c, 0x82, 0xb1, 0x98,
-	0x76, 0xa3, 0xbc, 0x6d, 0x31, 0x0c, 0xe4, 0x90, 0x1f, 0x5f, 0x9d, 0x19, 0x54, 0xe7, 0x1f, 0xff,
-	0x11, 0xd6, 0xf9, 0xb7, 0xe1, 0x7c, 0x10, 0x26, 0xd4, 0xef, 0xc5, 0xd2, 0x05, 0x5e, 0x8f, 0x12,
-	0xad, 0x7f, 0x95, 0xda, 0xfb, 0x24, 0xa1, 0xf3, 0x6b, 0x83, 0x90, 0x70, 0xf0, 0xb3, 0x6c, 0x3e,
-	0x15, 0x80, 0x6f, 0x90, 0x15, 0x2b, 0x3d, 0x94, 0xe3, 0xa8, 0x31, 0x58, 0xf0, 0x45, 0x43, 0x6f,
-	0xb7, 0x4d, 0xd7, 0x1b, 0x09, 0xdf, 0xf3, 0xac, 0xe0, 0xeb, 0x8a, 0x00, 0x5c, 0xdd, 0x46, 0x83,
-	0x33, 0xd8, 0xee, 0xaa, 0x05, 0xd9, 0x1d, 0x9c, 0xd6, 0xee, 0x74, 0xf6, 0x35, 0x35, 0xf4, 0xf2,
-	0x97, 0xda, 0x0b, 0xa6, 0x87, 0xee, 0x05, 0x1f, 0x87, 0xd9, 0x20, 0x6c, 0xd1, 0x38, 0x48, 0x69,
-	0x9d, 0x1b, 0xc2, 0xfc, 0x0c, 0x9f, 0x08, 0x7d, 0x52, 0xb9, 0x96, 0x81, 0x62, 0x0e, 0xdb, 0x7d,
-	0xbd, 0x04, 0xe7, 0x8d, 0x81, 0x30, 0xc9, 0x82, 0x06, 0xd3, 0x12, 0xde, 0x79, 0x2c, 0x0e, 0x67,
-	0xac, 0x6f, 0x37, 0xe8, 0x90, 0x62, 0x5b, 0x43, 0xd0, 0xc2, 0x62, 0xeb, 0xe7, 0xd3, 0x98, 0x77,
-	0x45, 0xe4, 0xad, 0x67, 0x45, 0x8e, 0xa3, 0xc6, 0xe0, 0x9f, 0x87, 0xa0, 0x71, 0x2a, 0x6b, 0x6d,
-	0xf9, 0x53, 0xc1, 0x15, 0x03, 0x42, 0x1b, 0x8f, 0xed, 0x63, 0xbe, 0x5a, 0x3c, 0x66, 0x41, 0xd3,
-	0x62, 0x1f, 0xd3, 0xeb, 0xa5, 0xa1, 0x4a, 0x1c, 0x7e, 0x9a, 0x34, 0xde, 0x2f, 0x0e, 0x4f, 0x3d,
-	0x34, 0x86, 0xfb, 0x9f, 0x0e, 0xbc, 0x77, 0xe0, 0x54, 0x3c, 0x02, 0x97, 0xd8, 0xcb, 0xba, 0xc4,
-	0xad, 0x11, 0x5d, 0x62, 0xdf, 0x2b, 0x0c, 0x71, 0x8f, 0x7f, 0xef, 0xc0, 0xac, 0xc1, 0x7f, 0x04,
-	0xef, 0xd9, 0x28, 0xee, 0x5b, 0x0f, 0x46, 0xee, 0x5a, 0xb5, 0xef, 0xc5, 0xde, 0xe6, 0x2f, 0x26,
-	0x02, 0xb9, 0x65, 0x5f, 0x5d, 0xb5, 0x3c, 0x26, 0xae, 0xda, 0x87, 0x09, 0xde, 0x98, 0x9f, 0x14,
-	0x10, 0x4d, 0x66, 0x99, 0xf3, 0xd2, 0x89, 0x89, 0x26, 0xf9, 0xdf, 0x04, 0x25, 0x37, 0xde, 0xae,
-	0x13, 0x24, 0xcc, 0x49, 0xd5, 0x65, 0x89, 0xc7, 0xb4, 0xeb, 0xc8, 0x71, 0xd4, 0x18, 0x6e, 0x07,
-	0xe6, 0xb3, 0xc4, 0x57, 0x69, 0x83, 0x27, 0xe9, 0x27, 0x7a, 0x47, 0x96, 0xb0, 0xf2, 0xa7, 0xd6,
-	0x7b, 0x5e, 0xfe, 0xb2, 0xe5, 0xb2, 0x02, 0xa0, 0xc1, 0x71, 0xff, 0xd8, 0x81, 0x73, 0x03, 0x5e,
-	0xa6, 0xc0, 0xd2, 0x56, 0x6a, 0x8c, 0x7f, 0xc8, 0x05, 0xd8, 0x3a, 0x6d, 0x78, 0x2a, 0x21, 0xb4,
-	0xd2, 0xc7, 0x55, 0x31, 0x8c, 0x0a, 0xee, 0xfe, 0xbb, 0x03, 0x67, 0xb2, 0xb2, 0x26, 0xe4, 0x06,
-	0x10, 0xf1, 0x32, 0xab, 0x41, 0xe2, 0x47, 0xfb, 0x34, 0x3e, 0x60, 0x6f, 0x2e, 0xa4, 0xbe, 0x20,
-	0x29, 0x91, 0xe5, 0x3e, 0x0c, 0x1c, 0xf0, 0x14, 0xf9, 0x0a, 0x3f, 0x2b, 0x54, 0xb3, 0xad, 0xd4,
-	0x64, 0xbb, 0x30, 0x35, 0x31, 0x2b, 0x69, 0x87, 0xf3, 0x9a, 0x1f, 0xda, 0xcc, 0xdd, 0x1f, 0x96,
-	0x61, 0x5a, 0x3d, 0xce, 0xd3, 0x8f, 0x82, 0x12, 0xb7, 0xcc, 0x75, 0xdc, 0xf2, 0x29, 0xae, 0xe3,
-	0x8e, 0x3d, 0x28, 0x61, 0x11, 0xd7, 0x43, 0x4d, 0xd8, 0x62, 0x39, 0xfa, 0x1d, 0x03, 0x42, 0x1b,
-	0x8f, 0x49, 0xd2, 0x0e, 0xf6, 0xa9, 0x78, 0x68, 0x22, 0x2b, 0xc9, 0xba, 0x02, 0xa0, 0xc1, 0x61,
-	0x92, 0xd4, 0x83, 0x46, 0x83, 0x87, 0x0e, 0x96, 0x24, 0x6c, 0x76, 0x90, 0x43, 0x18, 0x46, 0x2b,
-	0x8a, 0xf6, 0x64, 0xb4, 0xa0, 0x31, 0xae, 0x47, 0xd1, 0x1e, 0x72, 0x08, 0xd9, 0x80, 0x73, 0x61,
-	0x14, 0x77, 0xbc, 0x76, 0xf0, 0x1a, 0xad, 0x6b, 0x2e, 0x32, 0x4a, 0xf8, 0x7f, 0xf2, 0x81, 0x73,
-	0x9b, 0xfd, 0x28, 0x38, 0xe8, 0x39, 0xa6, 0x7e, 0xdd, 0x98, 0xd6, 0x03, 0x3f, 0xb5, 0xa9, 0x41,
-	0x56, 0xfd, 0xb6, 0xfa, 0x30, 0x70, 0xc0, 0x53, 0xee, 0x7f, 0xf0, 0x0d, 0x6a, 0x48, 0xd3, 0xfe,
-	0x23, 0xcb, 0xdb, 0xb3, 0x0a, 0x32, 0x76, 0x02, 0x05, 0x61, 0x79, 0x71, 0x12, 0x85, 0x3a, 0x2f,
-	0x1e, 0x1f, 0x9a, 0x17, 0x5b, 0x58, 0xee, 0x77, 0xc7, 0xe1, 0x09, 0xdd, 0xed, 0x49, 0xd3, 0xbb,
-	0x51, 0xbc, 0x17, 0x84, 0x4d, 0x7e, 0xcc, 0xf1, 0x0d, 0x07, 0xa6, 0x85, 0xa2, 0xc8, 0x6b, 0x47,
-	0xa2, 0xac, 0xef, 0x17, 0xd1, 0x57, 0x9a, 0xe1, 0xb4, 0xb8, 0x63, 0x71, 0xc9, 0x5d, 0x39, 0xb2,
-	0x41, 0x98, 0x11, 0x87, 0xbc, 0x06, 0xa0, 0xae, 0x43, 0x37, 0x8a, 0xb8, 0x11, 0xae, 0x84, 0x43,
-	0xda, 0x30, 0x21, 0xd8, 0x8e, 0xe6, 0x80, 0x16, 0x37, 0xf2, 0x65, 0x07, 0x26, 0xda, 0x62, 0x56,
-	0x44, 0x99, 0xf6, 0xd3, 0xc5, 0xcf, 0x8a, 0x3d, 0x1f, 0x7a, 0x53, 0x93, 0x33, 0x21, 0x99, 0x13,
-	0x84, 0xc9, 0x20, 0x6c, 0xc6, 0x34, 0x51, 0x15, 0x84, 0x0f, 0x5a, 0x61, 0xc4, 0xa2, 0x1f, 0xc5,
-	0x94, 0x07, 0x0d, 0x91, 0x57, 0xaf, 0x79, 0x6d, 0x2f, 0xf4, 0x69, 0xbc, 0x26, 0xd0, 0x8d, 0x7f,
-	0x97, 0x03, 0xa8, 0x08, 0xf5, 0x35, 0x4b, 0x8f, 0x9f, 0xa4, 0x59, 0xfa, 0xc2, 0x27, 0x60, 0xae,
-	0x6f, 0x19, 0x4f, 0x73, 0xab, 0xeb, 0xc2, 0x47, 0x61, 0xea, 0x61, 0x2f, 0x84, 0xfd, 0xc9, 0x84,
-	0x71, 0xd2, 0x9b, 0x51, 0x9d, 0x77, 0x09, 0xc7, 0x66, 0x35, 0x65, 0x84, 0x55, 0x94, 0x6e, 0x58,
-	0x57, 0x67, 0xf5, 0x20, 0xda, 0xfc, 0x98, 0x66, 0x76, 0xbd, 0x98, 0x86, 0xef, 0xaa, 0x66, 0x6e,
-	0x69, 0x0e, 0x68, 0x71, 0x23, 0x34, 0x73, 0x7a, 0xb0, 0x32, 0xe2, 0xe9, 0x01, 0x0b, 0xf7, 0x06,
-	0xde, 0x15, 0x7a, 0xd3, 0x81, 0xd9, 0x30, 0xa3, 0xaf, 0xb2, 0x90, 0xfc, 0x42, 0xe1, 0x86, 0x20,
-	0xae, 0x46, 0x64, 0xc7, 0x30, 0xc7, 0x9c, 0x2c, 0xc3, 0x19, 0xb5, 0x02, 0xd9, 0x6e, 0x5d, 0x9d,
-	0x6b, 0x63, 0x16, 0x8c, 0x79, 0x7c, 0xab, 0xdd, 0x7f, 0x62, 0x58, 0xbb, 0x3f, 0xd9, 0xd3, 0x37,
-	0x7b, 0x26, 0x8b, 0xbd, 0xd9, 0x03, 0x03, 0x6e, 0xf5, 0xdc, 0x86, 0xaa, 0x1f, 0x53, 0x2f, 0x7d,
-	0xc8, 0xdb, 0x1e, 0xfc, 0x03, 0x02, 0x2b, 0x8a, 0x00, 0x1a, 0x5a, 0xee, 0xd7, 0xcb, 0x70, 0x56,
-	0x4d, 0x87, 0xaa, 0xb0, 0xb2, 0x0d, 0x47, 0xf0, 0x35, 0x91, 0x9b, 0xde, 0x70, 0xae, 0x2b, 0x00,
-	0x1a, 0x1c, 0x16, 0x32, 0x8a, 0xe8, 0x2d, 0xc9, 0x9f, 0x38, 0xc8, 0xa8, 0x10, 0x15, 0x9c, 0x7c,
-	0x7d, 0xe0, 0xe5, 0xba, 0x02, 0xce, 0xd7, 0xfa, 0xca, 0xc3, 0xa7, 0xbc, 0x55, 0xf7, 0x86, 0x03,
-	0x67, 0xf6, 0x32, 0x47, 0xba, 0xca, 0x91, 0x8e, 0xd2, 0xdb, 0x91, 0x3d, 0x24, 0x36, 0x2a, 0x98,
-	0x1d, 0x4f, 0x30, 0xcf, 0xda, 0xfd, 0x2f, 0x07, 0x6c, 0xaf, 0x72, 0xb2, 0x68, 0xc3, 0xba, 0x7a,
-	0x5b, 0x7a, 0xf0, 0xd5, 0x5b, 0x1d, 0x98, 0x94, 0x4f, 0x16, 0x97, 0x8e, 0x9d, 0x22, 0x2e, 0x1d,
-	0x1f, 0x1a, 0xc9, 0xbc, 0x0f, 0xca, 0xbd, 0xa0, 0x2e, 0x43, 0x4b, 0x53, 0x3f, 0x5e, 0x5b, 0x45,
-	0x36, 0xee, 0xfe, 0xc5, 0xb8, 0x49, 0x22, 0xe5, 0x01, 0xd1, 0x4f, 0xc4, 0x6b, 0x37, 0x74, 0xab,
-	0x8e, 0x78, 0xf3, 0xcd, 0xbe, 0x56, 0x9d, 0x5f, 0x38, 0xfd, 0xd9, 0x9f, 0x98, 0xa0, 0x61, 0x9d,
-	0x3a, 0x93, 0xc7, 0x1c, 0xfc, 0xdd, 0x81, 0x0a, 0x8b, 0xbe, 0x79, 0x1d, 0xa8, 0x92, 0x11, 0xaa,
-	0x72, 0x5d, 0x8e, 0xdf, 0x3f, 0x5c, 0xf8, 0xd8, 0xe9, 0xc5, 0x52, 0x4f, 0xa3, 0xa6, 0x4f, 0x12,
-	0xa8, 0xb2, 0xdf, 0xfc, 0x8c, 0x52, 0xc6, 0xf5, 0x2f, 0x6a, 0x77, 0xa2, 0x00, 0x85, 0x1c, 0x80,
-	0x1a, 0x3e, 0x24, 0x84, 0x2a, 0xbf, 0xd2, 0xcb, 0x99, 0x8a, 0xf0, 0x7f, 0x4b, 0x9f, 0x16, 0x2a,
-	0xc0, 0xfd, 0xc3, 0x85, 0xe7, 0x4f, 0xcf, 0x54, 0x3f, 0x8e, 0x86, 0x85, 0xfb, 0x4e, 0xd9, 0xe8,
-	0xae, 0xec, 0xd0, 0xfa, 0x89, 0xd0, 0xdd, 0xe7, 0x72, 0xba, 0x7b, 0xa9, 0x4f, 0x77, 0x67, 0xcd,
-	0x15, 0xd8, 0x8c, 0x36, 0x3e, 0xd2, 0x0d, 0xf2, 0xf8, 0x3c, 0x93, 0x87, 0x05, 0xaf, 0xf6, 0x82,
-	0x98, 0x26, 0x5b, 0x71, 0x2f, 0x0c, 0xc2, 0x26, 0xd7, 0xc5, 0x8a, 0x1d, 0x16, 0x64, 0xc0, 0x98,
-	0xc7, 0x77, 0xbf, 0xcd, 0xcf, 0x6d, 0xac, 0x46, 0x07, 0xb6, 0xc4, 0x6d, 0x7e, 0x31, 0x5a, 0xf4,
-	0x56, 0xe9, 0x25, 0x16, 0xb7, 0xa1, 0x05, 0x8c, 0xa4, 0x30, 0xb9, 0x2b, 0x2e, 0x8a, 0x15, 0xd0,
-	0x9d, 0x2b, 0xaf, 0x9c, 0xf1, 0xcb, 0x3d, 0xea, 0xfe, 0xd9, 0x7d, 0xf3, 0x13, 0x15, 0x2b, 0xf7,
-	0xf7, 0xca, 0x70, 0x26, 0x77, 0x7f, 0x97, 0x7c, 0x18, 0x2a, 0xea, 0x82, 0x76, 0xbe, 0x5c, 0xac,
-	0x3f, 0x2c, 0xa5, 0x31, 0xc8, 0x67, 0x00, 0xea, 0xb4, 0xdb, 0x8e, 0x0e, 0x78, 0xd4, 0x31, 0x76,
-	0xea, 0xa8, 0x43, 0xc7, 0xa7, 0xab, 0x9a, 0x0a, 0x5a, 0x14, 0x65, 0x37, 0xd9, 0xb8, 0xb8, 0x03,
-	0x97, 0xed, 0x26, 0xb3, 0x7a, 0xd3, 0x27, 0x1e, 0x61, 0x6f, 0x7a, 0x00, 0x67, 0x84, 0x7c, 0xba,
-	0x9f, 0xe0, 0x21, 0xda, 0x06, 0xce, 0x31, 0x5d, 0x5a, 0xcd, 0x92, 0xc1, 0x3c, 0x5d, 0xf7, 0xab,
-	0x25, 0x16, 0x78, 0x89, 0x99, 0xde, 0x50, 0xd5, 0xda, 0x0f, 0xc0, 0x84, 0xd7, 0x4b, 0x5b, 0x51,
-	0xdf, 0x95, 0xbd, 0x65, 0x3e, 0x8a, 0x12, 0x4a, 0xd6, 0x61, 0xac, 0xee, 0xa5, 0xea, 0x33, 0x88,
-	0xa7, 0x11, 0xce, 0xd4, 0x68, 0xbc, 0x94, 0x22, 0xa7, 0x42, 0x9e, 0x84, 0xb1, 0xd4, 0x6b, 0x66,
-	0x3e, 0x02, 0xb3, 0xe3, 0x35, 0x13, 0xe4, 0xa3, 0xf6, 0xa6, 0x32, 0x76, 0xcc, 0xa6, 0xf2, 0xbc,
-	0xf5, 0x69, 0x4e, 0xeb, 0x0c, 0xa0, 0xff, 0x8b, 0x9a, 0x3c, 0x6e, 0xcf, 0xe2, 0xba, 0x3f, 0x03,
-	0xd3, 0xf6, 0x17, 0x37, 0x4f, 0xd4, 0xd1, 0xec, 0xfe, 0xf3, 0x18, 0xcc, 0x64, 0x7a, 0x4e, 0x32,
-	0x2a, 0xee, 0x1c, 0xab, 0xe2, 0x4f, 0xc1, 0x78, 0x37, 0xee, 0x85, 0x54, 0xb6, 0x12, 0x69, 0x26,
-	0xcc, 0xe2, 0x29, 0x0a, 0x18, 0x5b, 0x95, 0x7a, 0x7c, 0x80, 0xbd, 0x50, 0x16, 0x8b, 0xf5, 0xaa,
-	0xac, 0xf2, 0x51, 0x94, 0x50, 0xf2, 0x39, 0x98, 0x4e, 0xb8, 0x2b, 0x14, 0xce, 0x41, 0x5a, 0xcc,
-	0xb5, 0x91, 0x3f, 0x2e, 0x20, 0x9b, 0xaa, 0x78, 0xda, 0x6d, 0x8f, 0x60, 0x86, 0x1d, 0xf9, 0xa2,
-	0x63, 0x7f, 0x50, 0x61, 0x62, 0xe4, 0x73, 0x8d, 0x7c, 0x2f, 0x8f, 0x30, 0x9d, 0x07, 0x7f, 0x57,
-	0xa1, 0xab, 0xcd, 0x76, 0xf2, 0x5d, 0x30, 0x5b, 0x18, 0x60, 0xb2, 0x1f, 0x82, 0x6a, 0xc7, 0x0b,
-	0x83, 0x06, 0x4d, 0x52, 0xf1, 0x75, 0xdc, 0xaa, 0xc8, 0x76, 0x36, 0xd4, 0x20, 0x1a, 0x38, 0xff,
-	0xf4, 0x34, 0x7f, 0x2b, 0x91, 0xab, 0x54, 0xad, 0x4f, 0x4f, 0x9b, 0x61, 0xb4, 0x71, 0xdc, 0xef,
-	0x38, 0x70, 0x7e, 0xe0, 0x4c, 0xfc, 0xf8, 0xd6, 0xff, 0xdc, 0xef, 0x94, 0xe0, 0xdc, 0x80, 0x4e,
-	0x2c, 0xb2, 0xff, 0xee, 0x7c, 0x71, 0x43, 0xf6, 0x79, 0xcd, 0x0c, 0xd5, 0x8a, 0xd3, 0x6d, 0x3b,
-	0xc6, 0xf5, 0x97, 0x1f, 0x9d, 0xeb, 0x77, 0xff, 0xa8, 0x04, 0xd6, 0xf7, 0x60, 0xc8, 0xaf, 0xd8,
-	0x7d, 0x86, 0x4e, 0x21, 0x7d, 0x71, 0x82, 0xb2, 0x6e, 0x52, 0x14, 0xf3, 0x35, 0xa8, 0x67, 0x31,
-	0xaf, 0xa6, 0xa5, 0xe3, 0xd5, 0x94, 0x04, 0xaa, 0x95, 0xb3, 0x5c, 0x70, 0x2b, 0x67, 0xb5, 0xaf,
-	0x8d, 0xb3, 0x25, 0x94, 0x2b, 0xf7, 0x3a, 0xc6, 0x95, 0x3a, 0x0f, 0x70, 0xa5, 0x1f, 0x86, 0x4a,
-	0x42, 0xdb, 0x0d, 0x16, 0xbc, 0x49, 0x97, 0xab, 0x35, 0x61, 0x5b, 0x8e, 0xa3, 0xc6, 0x70, 0x7f,
-	0xe8, 0x88, 0x35, 0x91, 0xf1, 0xf4, 0x73, 0xb9, 0x1b, 0x0f, 0x27, 0x0f, 0x45, 0x0f, 0x00, 0x7c,
-	0x7d, 0xef, 0xad, 0x80, 0x8f, 0xbe, 0x98, 0x4b, 0x74, 0xf6, 0x27, 0x49, 0xd4, 0x18, 0x5a, 0xcc,
-	0x32, 0xba, 0x5f, 0x3e, 0x4e, 0xf7, 0xdd, 0x7f, 0x73, 0x20, 0xe3, 0xe2, 0x49, 0x07, 0xc6, 0x99,
-	0x04, 0x07, 0x05, 0x5c, 0xd1, 0xb3, 0xe9, 0x32, 0xbb, 0x90, 0x6b, 0xcb, 0x7f, 0xa2, 0xe0, 0x42,
-	0x02, 0x19, 0x46, 0x97, 0x46, 0xbe, 0x0a, 0x6a, 0x73, 0x63, 0x51, 0xb8, 0xfc, 0x80, 0xa8, 0x8e,
-	0xc7, 0xdd, 0xe7, 0x60, 0xae, 0x4f, 0x22, 0xde, 0x44, 0x1f, 0xa9, 0x1b, 0x89, 0x96, 0x12, 0xf1,
-	0x8b, 0x18, 0x28, 0x60, 0x2c, 0x0c, 0x3f, 0x9b, 0x27, 0x4f, 0x7e, 0xc7, 0x81, 0xb9, 0x24, 0x4f,
-	0xef, 0x5d, 0x99, 0x35, 0x5d, 0x56, 0xea, 0x03, 0x61, 0xbf, 0x04, 0xee, 0xdf, 0x4a, 0xbf, 0x22,
-	0xbe, 0xaa, 0xae, 0xf7, 0x03, 0x67, 0xe8, 0x7e, 0xc0, 0x4c, 0xc4, 0x6f, 0xd1, 0x7a, 0xaf, 0xdd,
-	0xd7, 0xd2, 0xb1, 0x2d, 0xc7, 0x51, 0x63, 0x64, 0xbe, 0x3c, 0x51, 0x3e, 0xf6, 0xcb, 0x13, 0xcf,
-	0xc2, 0xb4, 0x7d, 0x79, 0x96, 0xd7, 0xb7, 0x64, 0x3d, 0xdf, 0xbe, 0x67, 0x8b, 0x19, 0xac, 0xdc,
-	0xf7, 0x0b, 0xc6, 0x8f, 0xfd, 0x7e, 0xc1, 0xd3, 0x50, 0x91, 0xdf, 0x29, 0x57, 0xf5, 0x53, 0xd1,
-	0x2f, 0x22, 0xc7, 0x50, 0x43, 0xc9, 0x65, 0x80, 0x8e, 0x17, 0xf6, 0xbc, 0x36, 0x9b, 0x21, 0xd9,
-	0x80, 0xa4, 0x0d, 0x6a, 0x43, 0x43, 0xd0, 0xc2, 0x62, 0x26, 0x92, 0xbf, 0x38, 0x9e, 0x69, 0x63,
-	0x72, 0x8e, 0x6d, 0x63, 0xca, 0x36, 0xda, 0x94, 0x4e, 0xd4, 0x68, 0x63, 0xf7, 0xc0, 0x94, 0x1f,
-	0xd8, 0x03, 0xf3, 0x7e, 0x73, 0x71, 0x4d, 0x34, 0xcb, 0x4c, 0x0d, 0xba, 0xb4, 0x46, 0x5c, 0x98,
-	0xf0, 0x3d, 0xdd, 0x87, 0x38, 0x2d, 0x62, 0x9b, 0x95, 0x65, 0x8e, 0x24, 0x21, 0xb5, 0xc5, 0xb7,
-	0xde, 0xb9, 0xf8, 0xd8, 0xf7, 0xde, 0xb9, 0xf8, 0xd8, 0xdb, 0xef, 0x5c, 0x7c, 0xec, 0x0b, 0x47,
-	0x17, 0x9d, 0xb7, 0x8e, 0x2e, 0x3a, 0xdf, 0x3b, 0xba, 0xe8, 0xbc, 0x7d, 0x74, 0xd1, 0xf9, 0x97,
-	0xa3, 0x8b, 0xce, 0x6f, 0xfd, 0xe0, 0xe2, 0x63, 0x2f, 0x57, 0x94, 0xae, 0xfe, 0x6f, 0x00, 0x00,
-	0x00, 0xff, 0xff, 0x69, 0x17, 0xe3, 0x0b, 0x88, 0x67, 0x00, 0x00,
+	// 5919 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3c, 0x6d, 0x6c, 0x24, 0xd9,
+	0x51, 0xd7, 0x33, 0xfe, 0x98, 0x29, 0x7f, 0xec, 0xfa, 0xed, 0xed, 0xc5, 0x59, 0x2e, 0xeb, 0x55,
+	0x9f, 0x92, 0x1c, 0x24, 0xb1, 0xb9, 0xe5, 0x80, 0x4b, 0x0e, 0x12, 0x3c, 0xf6, 0x7e, 0x78, 0xd7,
+	0xf6, 0xfa, 0xca, 0xbe, 0x5b, 0xe9, 0xf2, 0xc1, 0xb5, 0x7b, 0xde, 0xcc, 0xf4, 0x7a, 0xa6, 0x7b,
+	0xae, 0xbb, 0xc7, 0xbb, 0x3e, 0x92, 0x90, 0x40, 0x82, 0x4e, 0xe1, 0x2e, 0x42, 0x44, 0xe4, 0x0f,
+	0x09, 0x4a, 0xe0, 0x07, 0x22, 0x12, 0x3f, 0x22, 0x24, 0x04, 0x7f, 0x83, 0x04, 0x27, 0x7e, 0xa0,
+	0x28, 0x42, 0x70, 0x42, 0xc8, 0x70, 0x1b, 0x21, 0x21, 0xf8, 0x11, 0x10, 0xfc, 0xda, 0x5f, 0xe8,
+	0x7d, 0xbf, 0xee, 0x99, 0x59, 0xdb, 0x3b, 0xbd, 0x9b, 0x53, 0xf8, 0x37, 0xf3, 0xaa, 0xba, 0xaa,
+	0xfa, 0xbd, 0xaa, 0x7a, 0x55, 0xf5, 0xea, 0x35, 0xac, 0x35, 0x83, 0xb4, 0xd5, 0xdb, 0x5d, 0xf4,
+	0xa3, 0xce, 0x92, 0x17, 0x37, 0xa3, 0x6e, 0x1c, 0xdd, 0xe2, 0x3f, 0x3e, 0xe2, 0xd7, 0x97, 0xba,
+	0x7b, 0xcd, 0x25, 0xaf, 0x1b, 0x24, 0x4b, 0x5e, 0xb7, 0xdb, 0x0e, 0x7c, 0x2f, 0x0d, 0xa2, 0x70,
+	0x69, 0xff, 0x19, 0xaf, 0xdd, 0x6d, 0x79, 0xcf, 0x2c, 0x35, 0x69, 0x48, 0x63, 0x2f, 0xa5, 0xf5,
+	0xc5, 0x6e, 0x1c, 0xa5, 0x11, 0xf9, 0xa8, 0x21, 0xb5, 0xa8, 0x48, 0xf1, 0x1f, 0xbf, 0xea, 0xd7,
+	0x17, 0xbb, 0x7b, 0xcd, 0x45, 0x46, 0x6a, 0xd1, 0x22, 0xb5, 0xa8, 0x48, 0x9d, 0xfb, 0x88, 0x25,
+	0x45, 0x33, 0x6a, 0x46, 0x4b, 0x9c, 0xe2, 0x6e, 0xaf, 0xc1, 0xff, 0xf1, 0x3f, 0xfc, 0x97, 0xe0,
+	0x74, 0xce, 0xdd, 0x7b, 0x2e, 0x59, 0x0c, 0x22, 0x26, 0xdb, 0x92, 0x1f, 0xc5, 0x74, 0x69, 0xbf,
+	0x4f, 0x9a, 0x73, 0xcf, 0x1a, 0x9c, 0x8e, 0xe7, 0xb7, 0x82, 0x90, 0xc6, 0x07, 0xe6, 0x85, 0x3a,
+	0x34, 0xf5, 0x06, 0x3d, 0xb5, 0x34, 0xec, 0xa9, 0xb8, 0x17, 0xa6, 0x41, 0x87, 0xf6, 0x3d, 0xf0,
+	0x0b, 0x47, 0x3d, 0x90, 0xf8, 0x2d, 0xda, 0xf1, 0xf2, 0xcf, 0xb9, 0xaf, 0xc2, 0xcc, 0xf2, 0xcd,
+	0xed, 0xe5, 0x5e, 0xda, 0x5a, 0x89, 0xc2, 0x46, 0xd0, 0x24, 0x3f, 0x0f, 0x53, 0x7e, 0xbb, 0x97,
+	0xa4, 0x34, 0xde, 0xf4, 0x3a, 0x74, 0xde, 0xb9, 0xe0, 0x3c, 0x5d, 0xad, 0x9d, 0x79, 0xeb, 0x70,
+	0xe1, 0xb1, 0xbb, 0x87, 0x0b, 0x53, 0x2b, 0x06, 0x84, 0x36, 0x1e, 0xf9, 0x69, 0x98, 0x8c, 0xa3,
+	0x36, 0x5d, 0xc6, 0xcd, 0xf9, 0x12, 0x7f, 0xe4, 0x94, 0x7c, 0x64, 0x12, 0xc5, 0x30, 0x2a, 0xb8,
+	0xfb, 0xfd, 0x12, 0xc0, 0x72, 0xb7, 0xbb, 0x15, 0x47, 0xb7, 0xa8, 0x9f, 0x92, 0x57, 0xa0, 0xc2,
+	0x66, 0xa1, 0xee, 0xa5, 0x1e, 0xe7, 0x36, 0x75, 0xf1, 0x67, 0x17, 0xc5, 0xcb, 0x2c, 0xda, 0x2f,
+	0x63, 0x56, 0x8e, 0x61, 0x2f, 0xee, 0x3f, 0xb3, 0x78, 0x63, 0x97, 0x3d, 0xbf, 0x41, 0x53, 0xaf,
+	0x46, 0x24, 0x33, 0x30, 0x63, 0xa8, 0xa9, 0x92, 0x3d, 0x18, 0x4b, 0xba, 0xd4, 0xe7, 0x82, 0x4d,
+	0x5d, 0x5c, 0x5b, 0x7c, 0x60, 0xfd, 0x58, 0x34, 0x62, 0x6f, 0x77, 0xa9, 0x5f, 0x9b, 0x96, 0x6c,
+	0xc7, 0xd8, 0x3f, 0xe4, 0x4c, 0x48, 0x02, 0x13, 0x49, 0xea, 0xa5, 0xbd, 0x64, 0xbe, 0xcc, 0xd9,
+	0x5d, 0x2f, 0x86, 0x1d, 0x27, 0x59, 0x9b, 0x95, 0x0c, 0x27, 0xc4, 0x7f, 0x94, 0xac, 0xdc, 0x7f,
+	0x72, 0x60, 0xd6, 0x20, 0xaf, 0x07, 0x49, 0x4a, 0x3e, 0xd5, 0x37, 0xad, 0x8b, 0xc7, 0x9b, 0x56,
+	0xf6, 0x34, 0x9f, 0xd4, 0xd3, 0x92, 0x59, 0x45, 0x8d, 0x58, 0x53, 0x7a, 0x0b, 0xc6, 0x83, 0x94,
+	0x76, 0x92, 0xf9, 0xd2, 0x85, 0xf2, 0xd3, 0x53, 0x17, 0x2f, 0x15, 0xf2, 0x92, 0xb5, 0x19, 0xc9,
+	0x71, 0x7c, 0x8d, 0xd1, 0x46, 0xc1, 0xc2, 0xfd, 0x37, 0xb0, 0x5f, 0x8e, 0x4d, 0x35, 0x79, 0x06,
+	0xa6, 0x92, 0xa8, 0x17, 0xfb, 0x14, 0x69, 0x37, 0x4a, 0xe6, 0x9d, 0x0b, 0x65, 0xa6, 0x71, 0x4c,
+	0x41, 0xb7, 0xcd, 0x30, 0xda, 0x38, 0xe4, 0xb7, 0x1d, 0x98, 0xae, 0xd3, 0x24, 0x0d, 0x42, 0xce,
+	0x5f, 0x49, 0xfe, 0xc2, 0x68, 0x92, 0xab, 0xc1, 0x55, 0x43, 0xb9, 0xf6, 0xb8, 0x7c, 0x8b, 0x69,
+	0x6b, 0x30, 0xc1, 0x0c, 0x73, 0x66, 0x65, 0x75, 0x9a, 0xf8, 0x71, 0xd0, 0x65, 0xff, 0xb9, 0xaa,
+	0x58, 0x56, 0xb6, 0x6a, 0x40, 0x68, 0xe3, 0x91, 0x3d, 0x18, 0x67, 0x56, 0x94, 0xcc, 0x8f, 0x71,
+	0xe1, 0x2f, 0x8f, 0x20, 0xbc, 0x9c, 0x4e, 0x66, 0x9d, 0x66, 0xde, 0xd9, 0xbf, 0x04, 0x05, 0x0f,
+	0xf2, 0xa6, 0x03, 0xf3, 0xd2, 0xc4, 0x91, 0x8a, 0xa9, 0xbc, 0xd9, 0x0a, 0x52, 0xda, 0x0e, 0x92,
+	0x74, 0x7e, 0x9c, 0x0b, 0xb0, 0x74, 0x3c, 0x95, 0xba, 0x12, 0x47, 0xbd, 0xee, 0xf5, 0x20, 0xac,
+	0xd7, 0x2e, 0x48, 0x4e, 0xf3, 0x2b, 0x43, 0x08, 0xe3, 0x50, 0x96, 0xe4, 0x6b, 0x0e, 0x9c, 0x0b,
+	0xbd, 0x0e, 0x4d, 0xba, 0x1e, 0x5b, 0x54, 0x01, 0xae, 0xb5, 0x3d, 0x7f, 0x8f, 0x4b, 0x34, 0xf1,
+	0x60, 0x12, 0xb9, 0x52, 0xa2, 0x73, 0x9b, 0x43, 0x49, 0xe3, 0x7d, 0xd8, 0x92, 0x6f, 0x39, 0x30,
+	0x17, 0xc5, 0xdd, 0x96, 0x17, 0xd2, 0xba, 0x82, 0x26, 0xf3, 0x93, 0xdc, 0xe2, 0x3e, 0x39, 0xc2,
+	0xfa, 0xdc, 0xc8, 0xd3, 0xdc, 0x88, 0xc2, 0x20, 0x8d, 0xe2, 0x6d, 0x9a, 0xa6, 0x41, 0xd8, 0x4c,
+	0x6a, 0x67, 0xef, 0x1e, 0x2e, 0xcc, 0xf5, 0x61, 0x61, 0xbf, 0x30, 0xe4, 0x0e, 0x4c, 0x25, 0x07,
+	0xa1, 0x7f, 0x33, 0x08, 0xeb, 0xd1, 0xed, 0x64, 0xbe, 0x32, 0xb2, 0xc9, 0x6e, 0x6b, 0x6a, 0xd2,
+	0xe8, 0x0c, 0x75, 0xb4, 0x59, 0x0d, 0x5e, 0x32, 0xa3, 0x44, 0xd5, 0xa2, 0x97, 0xcc, 0xa8, 0xd1,
+	0x7d, 0xd8, 0x92, 0x2f, 0x39, 0x30, 0x93, 0x04, 0xcd, 0xd0, 0x4b, 0x7b, 0x31, 0xbd, 0x4e, 0x0f,
+	0x92, 0x79, 0xe0, 0x82, 0x5c, 0x19, 0x65, 0x4a, 0x2c, 0x7a, 0xb5, 0xb3, 0x52, 0xc0, 0x19, 0x7b,
+	0x34, 0xc1, 0x2c, 0xd3, 0x41, 0xf6, 0x65, 0xb4, 0x79, 0xaa, 0x58, 0xfb, 0x32, 0xba, 0x3c, 0x94,
+	0xa5, 0xfb, 0x57, 0x25, 0x38, 0x9d, 0xdf, 0x71, 0xc8, 0x1f, 0x39, 0x70, 0xea, 0xd6, 0xed, 0x74,
+	0x27, 0xda, 0xa3, 0x61, 0x52, 0x3b, 0x60, 0x0e, 0x82, 0xbb, 0xdb, 0xa9, 0x8b, 0xaf, 0x14, 0xb8,
+	0xb1, 0x2d, 0x5e, 0xcb, 0xb2, 0xb8, 0x14, 0xa6, 0xf1, 0x41, 0xed, 0x3d, 0xf2, 0x65, 0x4e, 0x5d,
+	0xbb, 0xb9, 0x63, 0x43, 0x31, 0x2f, 0xd1, 0xb9, 0xd7, 0x1d, 0x78, 0x7c, 0x10, 0x09, 0x72, 0x1a,
+	0xca, 0x7b, 0xf4, 0x40, 0x44, 0x31, 0xc8, 0x7e, 0x92, 0x97, 0x61, 0x7c, 0xdf, 0x6b, 0xf7, 0xa8,
+	0x8c, 0x06, 0x56, 0x47, 0x78, 0x0b, 0x2d, 0x16, 0x0a, 0x92, 0x1f, 0x2b, 0x3d, 0xe7, 0xb8, 0x7f,
+	0x5d, 0x86, 0x29, 0x6b, 0x63, 0x78, 0x04, 0xe1, 0x4d, 0x3b, 0x13, 0xde, 0x5c, 0x2b, 0x66, 0x43,
+	0x1b, 0x1a, 0xdf, 0xa4, 0xb9, 0xf8, 0x66, 0xbd, 0x20, 0x7e, 0xf7, 0x0d, 0x70, 0xc8, 0xab, 0x50,
+	0x8d, 0xba, 0x2c, 0x70, 0x65, 0xbb, 0xe5, 0xd8, 0xc8, 0x2b, 0x77, 0x43, 0xd1, 0xaa, 0xcd, 0xdc,
+	0x3d, 0x5c, 0xa8, 0xea, 0xbf, 0x68, 0xb8, 0xb8, 0xff, 0xe8, 0xc0, 0xe3, 0x96, 0x80, 0x2b, 0x51,
+	0x58, 0x0f, 0xf8, 0x8a, 0x5e, 0x80, 0xb1, 0xf4, 0xa0, 0xab, 0x42, 0x63, 0x3d, 0x47, 0x3b, 0x07,
+	0x5d, 0x8a, 0x1c, 0xc2, 0x82, 0xe1, 0x0e, 0x4d, 0x12, 0xaf, 0x49, 0xf3, 0xc1, 0xf0, 0x86, 0x18,
+	0x46, 0x05, 0x27, 0x31, 0x90, 0xb6, 0x97, 0xa4, 0x3b, 0xb1, 0x17, 0x26, 0x9c, 0xfc, 0x4e, 0xd0,
+	0xa1, 0x72, 0x6a, 0x7f, 0xe6, 0x78, 0x8a, 0xc2, 0x9e, 0xa8, 0x3d, 0x71, 0xf7, 0x70, 0x81, 0xac,
+	0xf7, 0x51, 0xc2, 0x01, 0xd4, 0xdd, 0xaf, 0x39, 0xf0, 0xc4, 0xe0, 0xd8, 0x85, 0x7c, 0x00, 0x26,
+	0x12, 0x1a, 0xef, 0xd3, 0x58, 0xbe, 0x9d, 0x59, 0x0f, 0x3e, 0x8a, 0x12, 0x4a, 0x96, 0xa0, 0xaa,
+	0x1d, 0xac, 0x7c, 0xc7, 0x39, 0x89, 0x5a, 0x35, 0x5e, 0xd9, 0xe0, 0xb0, 0x49, 0x63, 0x7f, 0x64,
+	0xa4, 0xa3, 0x27, 0x8d, 0x27, 0x12, 0x1c, 0xe2, 0xfe, 0xb3, 0x03, 0xa7, 0x2c, 0xa9, 0x1e, 0x41,
+	0x10, 0xbb, 0x97, 0x0d, 0x62, 0x2f, 0x17, 0xa3, 0xc9, 0x43, 0xa2, 0xd8, 0x3f, 0x9b, 0x80, 0x39,
+	0x5b, 0xdf, 0xb9, 0xf3, 0xe5, 0x69, 0x13, 0xed, 0x46, 0x2f, 0xe2, 0xba, 0x9c, 0x70, 0x93, 0x36,
+	0x89, 0x61, 0x54, 0x70, 0x36, 0x83, 0x5d, 0x2f, 0x6d, 0xc9, 0xd9, 0xd6, 0x33, 0xb8, 0xe5, 0xa5,
+	0x2d, 0xe4, 0x10, 0xf2, 0x71, 0x98, 0x4d, 0xbd, 0xb8, 0x49, 0x53, 0xa4, 0xfb, 0x41, 0xa2, 0x2c,
+	0xa5, 0x5a, 0x7b, 0x42, 0xe2, 0xce, 0xee, 0x64, 0xa0, 0x98, 0xc3, 0x26, 0x21, 0x8c, 0xb5, 0x68,
+	0xbb, 0x23, 0x83, 0x97, 0xad, 0x82, 0x0c, 0x9b, 0xbf, 0xe8, 0x55, 0xda, 0xee, 0xd4, 0x2a, 0x4c,
+	0x5e, 0xf6, 0x0b, 0x39, 0x1f, 0xf2, 0x1b, 0x0e, 0x54, 0xf7, 0x7a, 0x49, 0x1a, 0x75, 0x82, 0xd7,
+	0xe8, 0x7c, 0x85, 0x73, 0x7d, 0xb1, 0x48, 0xae, 0xd7, 0x15, 0x71, 0x61, 0xe6, 0xfa, 0x2f, 0x1a,
+	0xb6, 0xe4, 0x35, 0x98, 0xdc, 0x4b, 0xa2, 0x30, 0xa4, 0x2c, 0x1c, 0x61, 0x12, 0x6c, 0x17, 0x2a,
+	0x81, 0x20, 0x5d, 0x9b, 0x62, 0x4b, 0x2a, 0xff, 0xa0, 0x62, 0xc8, 0x27, 0xa0, 0x1e, 0xc4, 0xd4,
+	0x4f, 0xa3, 0xf8, 0x60, 0x1e, 0x8a, 0x9f, 0x80, 0x55, 0x45, 0x5c, 0x4c, 0x80, 0xfe, 0x8b, 0x86,
+	0x2d, 0xd9, 0x87, 0x89, 0x6e, 0xbb, 0xd7, 0x0c, 0xc2, 0xf9, 0x29, 0x2e, 0x00, 0x16, 0x29, 0xc0,
+	0x16, 0xa7, 0x5c, 0x03, 0xe6, 0x42, 0xc4, 0x6f, 0x94, 0xdc, 0xc8, 0x53, 0x30, 0xee, 0xb7, 0xbc,
+	0x38, 0x9d, 0x9f, 0xe6, 0x4a, 0xaa, 0xad, 0x66, 0x85, 0x0d, 0xa2, 0x80, 0xb9, 0x7f, 0xe3, 0xc0,
+	0xb9, 0xe1, 0x6f, 0x25, 0xcc, 0xc7, 0xef, 0xc5, 0x89, 0xf0, 0xc6, 0x15, 0xdb, 0x7c, 0xf8, 0x30,
+	0x2a, 0x38, 0xf9, 0x3c, 0x4c, 0xde, 0x92, 0xeb, 0x5c, 0x2a, 0x7e, 0x9d, 0xaf, 0xc9, 0x75, 0xd6,
+	0xfc, 0xaf, 0xa9, 0xb5, 0x96, 0x4c, 0xdd, 0xc3, 0x32, 0x9c, 0x1d, 0x68, 0x16, 0x64, 0x11, 0x80,
+	0x87, 0x0f, 0x97, 0x03, 0x96, 0xd9, 0x89, 0x5c, 0x76, 0x96, 0xed, 0xf6, 0x2f, 0xe9, 0x51, 0xb4,
+	0x30, 0xc8, 0x67, 0x01, 0xba, 0x5e, 0xec, 0x75, 0x68, 0x4a, 0x63, 0xe5, 0xbb, 0xae, 0x8e, 0xf0,
+	0x32, 0x4c, 0x88, 0x2d, 0x45, 0xd0, 0xc4, 0x1a, 0x7a, 0x28, 0x41, 0x8b, 0x1f, 0xcb, 0x5c, 0x63,
+	0xda, 0xa6, 0x5e, 0x42, 0x37, 0x8d, 0x3f, 0xd7, 0x99, 0x2b, 0x1a, 0x10, 0xda, 0x78, 0x6c, 0x63,
+	0xe1, 0xaf, 0x90, 0x48, 0x9f, 0xa4, 0x37, 0x16, 0xfe, 0x92, 0x09, 0x4a, 0x28, 0x79, 0xc3, 0x81,
+	0xd9, 0x46, 0xd0, 0xa6, 0x86, 0xbb, 0x4c, 0x35, 0xd7, 0x47, 0x7c, 0xc3, 0xcb, 0x36, 0x51, 0xe3,
+	0x12, 0x33, 0xc3, 0x09, 0xe6, 0x78, 0x33, 0x05, 0xdb, 0xa7, 0x31, 0xf7, 0xa5, 0x13, 0x59, 0xff,
+	0xfc, 0x92, 0x18, 0x46, 0x05, 0x77, 0xbf, 0x56, 0x82, 0xf9, 0x61, 0x7a, 0x41, 0xba, 0x30, 0x49,
+	0xef, 0xa4, 0x2f, 0x79, 0x71, 0x22, 0xa3, 0xe7, 0x51, 0xd2, 0x2f, 0x49, 0xf4, 0x25, 0x2f, 0x36,
+	0xe2, 0x5c, 0x12, 0xd4, 0x51, 0xb1, 0x21, 0x4d, 0x18, 0x4b, 0xdb, 0x5e, 0x11, 0x05, 0x1a, 0x8b,
+	0x9d, 0x09, 0x76, 0xd6, 0x97, 0x13, 0xe4, 0x0c, 0xc8, 0x93, 0x30, 0xd6, 0x0e, 0x76, 0x59, 0x38,
+	0xc8, 0x14, 0x97, 0xfb, 0xf8, 0xf5, 0x60, 0x37, 0x41, 0x3e, 0xea, 0xfe, 0xc0, 0x19, 0x30, 0x2b,
+	0xd2, 0x11, 0x32, 0x5d, 0xa2, 0xe1, 0x7e, 0x10, 0x47, 0x61, 0x87, 0x86, 0x69, 0xbe, 0xd6, 0x78,
+	0xc9, 0x80, 0xd0, 0xc6, 0x23, 0xbf, 0x3e, 0xc0, 0x00, 0x46, 0x29, 0xb3, 0x49, 0x71, 0x8e, 0x6d,
+	0x03, 0xee, 0xdf, 0x96, 0x07, 0x78, 0x25, 0xbd, 0xbb, 0x90, 0x8b, 0x00, 0x2c, 0xa2, 0xd9, 0x8a,
+	0x69, 0x23, 0xb8, 0x23, 0xdf, 0x4a, 0x93, 0xdc, 0xd4, 0x10, 0xb4, 0xb0, 0xd4, 0x33, 0xdb, 0xbd,
+	0x06, 0x7b, 0xa6, 0xd4, 0xff, 0x8c, 0x80, 0xa0, 0x85, 0x45, 0x9e, 0x85, 0x89, 0xa0, 0xe3, 0x35,
+	0xa9, 0x9a, 0xfb, 0x27, 0x99, 0x3d, 0xad, 0xf1, 0x91, 0x7b, 0x87, 0x0b, 0xb3, 0x5a, 0x20, 0x3e,
+	0x84, 0x12, 0x97, 0x7c, 0xdb, 0x81, 0x69, 0x3f, 0xea, 0x74, 0xa2, 0x70, 0xdd, 0xdb, 0xa5, 0x6d,
+	0x55, 0x4b, 0x6a, 0x3e, 0x94, 0x8d, 0x77, 0x71, 0xc5, 0xe2, 0x24, 0xb2, 0x3a, 0x5d, 0x1e, 0xb3,
+	0x41, 0x98, 0x11, 0xc9, 0x36, 0xbb, 0xf1, 0xfb, 0x9b, 0xdd, 0xb9, 0x4f, 0xc0, 0x5c, 0x1f, 0x8f,
+	0x01, 0x69, 0xdf, 0xe3, 0x76, 0xda, 0x57, 0xb5, 0x13, 0xb6, 0xdf, 0x77, 0xe0, 0x3d, 0x43, 0xf6,
+	0x2d, 0x1d, 0xb5, 0x3a, 0xc3, 0xa2, 0x56, 0xf2, 0x19, 0x28, 0xd3, 0x70, 0x5f, 0x2a, 0xe1, 0xca,
+	0x08, 0x73, 0x78, 0x29, 0xdc, 0x17, 0xf3, 0x33, 0x79, 0xf7, 0x70, 0xa1, 0x7c, 0x29, 0xdc, 0x47,
+	0x46, 0xd8, 0xfd, 0xf2, 0x44, 0x26, 0x2a, 0xde, 0x56, 0x29, 0x18, 0x97, 0x52, 0xc6, 0xc4, 0xeb,
+	0x45, 0x2e, 0x9d, 0x15, 0xf2, 0x8b, 0xea, 0xa9, 0xe4, 0x45, 0x5e, 0x77, 0x78, 0xcd, 0x52, 0xa5,
+	0x0a, 0x72, 0x17, 0x7d, 0x08, 0xf5, 0x53, 0xbb, 0x0c, 0xaa, 0x06, 0xd1, 0x66, 0xcd, 0xd4, 0xa3,
+	0x2b, 0xca, 0x07, 0x72, 0xff, 0xd1, 0xea, 0xa1, 0xaa, 0x9a, 0x0a, 0x4e, 0x7a, 0x00, 0xc9, 0x41,
+	0xe8, 0x6f, 0x45, 0xed, 0xc0, 0x3f, 0x90, 0x99, 0xe3, 0xa8, 0xa5, 0x2f, 0x41, 0x4c, 0xec, 0xd1,
+	0xe6, 0x3f, 0x5a, 0x8c, 0xc8, 0x37, 0x1d, 0x98, 0x0b, 0x9a, 0x61, 0x14, 0xd3, 0xd5, 0xa0, 0xd1,
+	0xa0, 0x31, 0x0d, 0x7d, 0xaa, 0x76, 0xb2, 0x9d, 0x11, 0xd8, 0xab, 0xaa, 0xcd, 0x5a, 0x9e, 0x76,
+	0xed, 0xbd, 0x72, 0x0a, 0xe6, 0xfa, 0x40, 0xd8, 0x2f, 0x09, 0xf1, 0x60, 0x2c, 0x08, 0x1b, 0x91,
+	0x2c, 0x9a, 0x7e, 0x62, 0x04, 0x89, 0xd6, 0xc2, 0x46, 0x64, 0x2c, 0x83, 0xfd, 0x43, 0x4e, 0x9a,
+	0xac, 0xc3, 0xe3, 0xb1, 0xcc, 0x2c, 0xae, 0x06, 0x09, 0x0b, 0xd7, 0xd6, 0x83, 0x4e, 0x90, 0xf2,
+	0xec, 0xa2, 0x5c, 0x9b, 0xbf, 0x7b, 0xb8, 0xf0, 0x38, 0x0e, 0x80, 0xe3, 0xc0, 0xa7, 0xdc, 0xff,
+	0xa9, 0x64, 0xd3, 0x27, 0x51, 0x16, 0x78, 0x0d, 0xaa, 0xb1, 0xae, 0xb9, 0x8a, 0x8d, 0x75, 0xad,
+	0x80, 0xd9, 0x95, 0xc5, 0x08, 0x9d, 0xd1, 0x9a, 0xea, 0xaa, 0x61, 0xc7, 0x36, 0x58, 0xb6, 0xe0,
+	0xd2, 0x0e, 0x46, 0xd5, 0x29, 0xc9, 0xd2, 0x54, 0x5c, 0x0e, 0x42, 0x1f, 0x39, 0x03, 0x12, 0xc1,
+	0x44, 0x8b, 0x7a, 0xed, 0xb4, 0x25, 0xcb, 0x02, 0x57, 0x46, 0x8a, 0x84, 0x18, 0xa1, 0x7c, 0xb1,
+	0x45, 0x8c, 0xa2, 0x64, 0x43, 0x7a, 0x30, 0xd9, 0x12, 0x73, 0x2f, 0xf7, 0x86, 0x6b, 0x23, 0xcd,
+	0x69, 0x66, 0x35, 0x8d, 0xa9, 0xca, 0x01, 0x54, 0xbc, 0xc8, 0x6f, 0x3a, 0x00, 0xbe, 0xaa, 0xb2,
+	0x28, 0x63, 0xb9, 0x51, 0x8c, 0x7f, 0xd1, 0xd5, 0x1b, 0xb3, 0xa9, 0xea, 0xa1, 0x04, 0x2d, 0xb6,
+	0xe4, 0x15, 0x98, 0x8e, 0xa9, 0x1f, 0x85, 0x7e, 0xd0, 0xa6, 0xf5, 0xe5, 0x94, 0x87, 0x7d, 0x27,
+	0x2b, 0xc5, 0x9c, 0x66, 0x9b, 0x1b, 0x5a, 0x34, 0x30, 0x43, 0x91, 0x7c, 0xd9, 0x81, 0x59, 0x5d,
+	0x66, 0x62, 0x4b, 0x41, 0x65, 0xc6, 0xbd, 0x56, 0x44, 0x45, 0x8b, 0x13, 0xac, 0x11, 0x16, 0xdb,
+	0x66, 0xc7, 0x30, 0xc7, 0x94, 0xbc, 0x0c, 0x10, 0xed, 0xf2, 0x7a, 0x0e, 0x7b, 0xcf, 0xca, 0x89,
+	0xdf, 0x73, 0x56, 0x54, 0x24, 0x15, 0x05, 0xb4, 0xa8, 0x91, 0xeb, 0x00, 0xc2, 0x4e, 0x76, 0x0e,
+	0xba, 0x94, 0x27, 0xd6, 0xd5, 0xda, 0x87, 0xd4, 0xcc, 0x6f, 0x6b, 0xc8, 0xbd, 0xc3, 0x85, 0xfe,
+	0xa4, 0x88, 0x17, 0xd2, 0xac, 0xc7, 0xc9, 0x1d, 0x98, 0x4c, 0x7a, 0x9d, 0x8e, 0xa7, 0x73, 0xe4,
+	0x8d, 0x82, 0x36, 0x3c, 0x41, 0xd4, 0xa8, 0xa4, 0x1c, 0x40, 0xc5, 0xce, 0x0d, 0x81, 0xf4, 0xe3,
+	0x93, 0x67, 0x61, 0x9a, 0xde, 0x49, 0x69, 0x1c, 0x7a, 0xed, 0x17, 0x71, 0x5d, 0xa5, 0x6c, 0x7c,
+	0xd9, 0x2f, 0x59, 0xe3, 0x98, 0xc1, 0x22, 0xae, 0x8e, 0xd6, 0x4a, 0x1c, 0x1f, 0x4c, 0xb4, 0xa6,
+	0x62, 0x33, 0xf7, 0xb7, 0x4a, 0x99, 0xdd, 0x7e, 0x27, 0xa6, 0x94, 0xb4, 0x61, 0x3c, 0x8c, 0xea,
+	0xda, 0xbf, 0x5d, 0x29, 0xc0, 0xbf, 0x6d, 0x46, 0x75, 0xeb, 0xd0, 0x8f, 0xfd, 0x4b, 0x50, 0x30,
+	0xe1, 0x67, 0x23, 0xea, 0x04, 0x89, 0x03, 0x64, 0x68, 0x53, 0x18, 0x5b, 0x7d, 0x36, 0x72, 0xc3,
+	0xe6, 0x82, 0x59, 0xa6, 0xee, 0x0f, 0x9d, 0x4c, 0xb6, 0x7c, 0xd3, 0x4b, 0xfd, 0xd6, 0xa5, 0x7d,
+	0x16, 0xfc, 0x5f, 0xcf, 0x54, 0x5f, 0x7f, 0xd1, 0xae, 0xbe, 0xde, 0x3b, 0x5c, 0xf8, 0xe0, 0xb0,
+	0x36, 0x88, 0xdb, 0x8c, 0xc2, 0x22, 0x27, 0x61, 0x15, 0x6a, 0x3f, 0x07, 0x53, 0x96, 0xc4, 0xd2,
+	0x95, 0x17, 0x55, 0x07, 0xd4, 0x71, 0x8c, 0x35, 0x88, 0x36, 0x3f, 0xf7, 0x77, 0x1d, 0x98, 0xac,
+	0x79, 0xfe, 0x5e, 0xd4, 0x68, 0x90, 0x0f, 0x43, 0xa5, 0xde, 0x93, 0x05, 0x6e, 0xf1, 0x6e, 0xba,
+	0x74, 0xb9, 0x2a, 0xc7, 0x51, 0x63, 0x30, 0x65, 0x6a, 0x78, 0x7e, 0x1a, 0xc5, 0x5c, 0xe6, 0xb2,
+	0x50, 0xa6, 0xcb, 0x7c, 0x04, 0x25, 0x84, 0x65, 0x57, 0x1d, 0xef, 0x8e, 0x7a, 0x38, 0x9f, 0xa9,
+	0x6f, 0x18, 0x10, 0xda, 0x78, 0xee, 0xb7, 0xc6, 0x61, 0x52, 0x9e, 0x1e, 0x1d, 0xbb, 0x1c, 0xac,
+	0xe2, 0xe4, 0xd2, 0xd0, 0x38, 0xb9, 0x0b, 0x13, 0x3e, 0x6f, 0x30, 0x91, 0x9b, 0xd8, 0x28, 0x05,
+	0x0b, 0x29, 0x9d, 0x68, 0x58, 0x31, 0x32, 0x89, 0xff, 0x28, 0xf9, 0x90, 0x37, 0x1d, 0x38, 0xe5,
+	0xb3, 0xc4, 0xce, 0x37, 0x7e, 0x76, 0x6c, 0xe4, 0x23, 0x92, 0x95, 0x2c, 0x45, 0x73, 0x46, 0x95,
+	0x03, 0x60, 0x9e, 0x37, 0x79, 0x1e, 0x66, 0xc4, 0x6c, 0xbd, 0x94, 0xc9, 0x6c, 0xcc, 0x59, 0xa1,
+	0x0d, 0xc4, 0x2c, 0x2e, 0x59, 0x14, 0xe9, 0x21, 0xaf, 0xa5, 0x27, 0x3c, 0x6a, 0x93, 0x35, 0x22,
+	0x5d, 0x6c, 0x4f, 0xd0, 0xc2, 0x20, 0x31, 0x90, 0x98, 0x36, 0x62, 0x9a, 0xb4, 0x90, 0xbe, 0xda,
+	0xa3, 0x49, 0xca, 0x7d, 0xfc, 0xe4, 0x83, 0x1d, 0x2b, 0x60, 0x1f, 0x25, 0x1c, 0x40, 0x9d, 0xb4,
+	0x64, 0x4c, 0x59, 0x19, 0xd9, 0x8a, 0xe4, 0x02, 0x0f, 0x0b, 0x2d, 0xdd, 0xff, 0x75, 0xe0, 0xb4,
+	0x52, 0x02, 0xcf, 0x6f, 0x51, 0x06, 0x22, 0x1f, 0x87, 0x59, 0x1d, 0x9c, 0xad, 0x44, 0x3d, 0x59,
+	0x4f, 0x28, 0x9b, 0x52, 0x0f, 0x66, 0xa0, 0x98, 0xc3, 0x26, 0x4b, 0x50, 0x65, 0x12, 0x89, 0x47,
+	0x85, 0x55, 0xe9, 0x00, 0x70, 0x79, 0x6b, 0x4d, 0x3e, 0x65, 0x70, 0x48, 0x04, 0x73, 0x6d, 0x2f,
+	0x49, 0xb9, 0x04, 0x2c, 0x5c, 0x7b, 0xc0, 0x93, 0x1b, 0x7e, 0x8e, 0xbf, 0x9e, 0x27, 0x84, 0xfd,
+	0xb4, 0xdd, 0x3f, 0x2f, 0xc3, 0x4c, 0x46, 0xf7, 0x99, 0xd3, 0xe8, 0x25, 0x6c, 0x8b, 0xd1, 0x39,
+	0xaa, 0x76, 0x1a, 0x2f, 0xca, 0x71, 0xd4, 0x18, 0x0c, 0xbb, 0xeb, 0x25, 0xc9, 0xed, 0x28, 0xae,
+	0x4b, 0x4b, 0xd5, 0xd8, 0x5b, 0x72, 0x1c, 0x35, 0x06, 0x73, 0x1f, 0xbb, 0xd4, 0x8b, 0x69, 0xcc,
+	0xcf, 0x38, 0xf3, 0xee, 0xa3, 0x66, 0x40, 0x68, 0xe3, 0x71, 0xb3, 0x4b, 0xdb, 0xc9, 0x4a, 0x3b,
+	0xa0, 0x61, 0x2a, 0xc4, 0x2c, 0xc0, 0xec, 0x76, 0xd6, 0xb7, 0x6d, 0x8a, 0xc6, 0xec, 0x72, 0x00,
+	0xcc, 0xf3, 0x26, 0x5f, 0x74, 0x60, 0xc6, 0xbb, 0x9d, 0x98, 0x0e, 0x37, 0x6e, 0x77, 0xa3, 0x39,
+	0xa0, 0x4c, 0xc7, 0x5c, 0x6d, 0x8e, 0x59, 0x6f, 0x66, 0x08, 0xb3, 0x1c, 0xdd, 0x6f, 0x97, 0x61,
+	0xca, 0xd2, 0xe9, 0x81, 0xae, 0xc9, 0x79, 0x37, 0xb9, 0xa6, 0xd2, 0x09, 0x5c, 0xd3, 0x67, 0xa1,
+	0xea, 0x2b, 0x23, 0x2c, 0xa0, 0xe7, 0x2d, 0x6f, 0xd7, 0xc6, 0x08, 0xf5, 0x10, 0x1a, 0x86, 0xe4,
+	0x0a, 0xcc, 0x59, 0x64, 0xa4, 0xf5, 0x8e, 0x71, 0xeb, 0xd5, 0x19, 0xf1, 0x72, 0x1e, 0x01, 0xfb,
+	0x9f, 0x71, 0xff, 0xde, 0xd1, 0x6b, 0xf4, 0x08, 0x8e, 0x1e, 0x9b, 0xd9, 0xa3, 0xc7, 0xda, 0xe8,
+	0x13, 0x36, 0xe4, 0xd8, 0x71, 0x13, 0x26, 0x57, 0xa2, 0x4e, 0xc7, 0x0b, 0xeb, 0xe4, 0xfd, 0x30,
+	0xe9, 0x8b, 0x9f, 0x32, 0x62, 0xe5, 0x87, 0x52, 0x12, 0x8a, 0x0a, 0x46, 0x9e, 0x84, 0x31, 0x2f,
+	0x6e, 0xaa, 0x28, 0x95, 0xd7, 0x73, 0x97, 0xe3, 0x66, 0x82, 0x7c, 0xd4, 0x7d, 0xb3, 0x04, 0xb0,
+	0x12, 0x75, 0xba, 0x5e, 0x4c, 0xeb, 0x3b, 0xd1, 0xff, 0xfb, 0x52, 0x94, 0xfb, 0x86, 0x03, 0x84,
+	0xcd, 0x47, 0x14, 0xd2, 0xd0, 0x54, 0x90, 0xd9, 0x66, 0xe2, 0xab, 0x51, 0xe9, 0x99, 0x8d, 0x1e,
+	0x2b, 0x00, 0x1a, 0x9c, 0x63, 0x44, 0x50, 0x4f, 0xa9, 0x0a, 0x66, 0x39, 0x7b, 0x5e, 0xc6, 0x0f,
+	0x50, 0x64, 0x41, 0xd3, 0xfd, 0x6a, 0x09, 0x9e, 0x10, 0x4e, 0x67, 0xc3, 0x0b, 0xbd, 0x26, 0xed,
+	0x30, 0xa9, 0x8e, 0x5b, 0xcb, 0x7c, 0x85, 0x6d, 0xe0, 0x81, 0x3a, 0x1f, 0x1b, 0x49, 0x27, 0x85,
+	0x2e, 0x09, 0xed, 0x59, 0x0b, 0x83, 0x14, 0x39, 0x65, 0xd2, 0x85, 0x8a, 0x6a, 0x40, 0x96, 0xae,
+	0xa2, 0x08, 0x2e, 0xda, 0xd0, 0xae, 0x48, 0xda, 0xa8, 0xb9, 0xb8, 0xdf, 0x73, 0x20, 0xef, 0xff,
+	0x78, 0x54, 0x2b, 0x5a, 0x58, 0xf2, 0x51, 0x6d, 0xb6, 0xe9, 0xe4, 0x04, 0x6d, 0x1c, 0x9f, 0x82,
+	0x29, 0x2f, 0x4d, 0x69, 0xa7, 0x2b, 0x02, 0xad, 0xf2, 0x83, 0x25, 0xd3, 0x1b, 0x51, 0x3d, 0x68,
+	0x04, 0x3c, 0xc0, 0xb2, 0xc9, 0xb9, 0x2f, 0x40, 0x45, 0x95, 0x87, 0x8f, 0xb1, 0x8c, 0x4f, 0x65,
+	0x4a, 0xdd, 0x43, 0x14, 0xe5, 0x8d, 0x12, 0xcc, 0x5e, 0x09, 0x7b, 0x5b, 0x57, 0xb6, 0x7a, 0xbb,
+	0xed, 0xc0, 0xbf, 0x4e, 0x0f, 0xd8, 0x73, 0x7b, 0xf4, 0x60, 0x6d, 0x55, 0x92, 0xd6, 0xcf, 0x5d,
+	0x67, 0x83, 0x28, 0x60, 0x2c, 0x2a, 0x68, 0x04, 0x61, 0x93, 0xc6, 0xdd, 0x38, 0x90, 0x71, 0x92,
+	0x15, 0x15, 0x5c, 0x36, 0x20, 0xb4, 0xf1, 0x18, 0xed, 0xe8, 0x76, 0x48, 0xe3, 0xbc, 0xf2, 0xde,
+	0x60, 0x83, 0x28, 0x60, 0x0c, 0x29, 0x8d, 0x7b, 0x49, 0x2a, 0x8f, 0x08, 0x35, 0xd2, 0x0e, 0x1b,
+	0x44, 0x01, 0x63, 0x8b, 0x92, 0xf4, 0x76, 0x79, 0x59, 0x21, 0x77, 0x34, 0xb0, 0x2d, 0x86, 0x51,
+	0xc1, 0x19, 0xea, 0x1e, 0x3d, 0x58, 0x65, 0x1e, 0x3c, 0x77, 0x78, 0x77, 0x5d, 0x0c, 0xa3, 0x82,
+	0xbb, 0x77, 0x1d, 0x20, 0xd9, 0xe9, 0x78, 0x04, 0x9b, 0x40, 0x98, 0xdd, 0x04, 0x46, 0x29, 0xff,
+	0x64, 0x65, 0x1f, 0xb2, 0x17, 0xfc, 0xa1, 0x03, 0xd3, 0x76, 0x01, 0x90, 0x34, 0x73, 0x86, 0x70,
+	0x23, 0x6b, 0x08, 0xf7, 0x0e, 0x17, 0x7e, 0x79, 0xd0, 0xb5, 0x8c, 0x66, 0x90, 0x46, 0xdd, 0xe4,
+	0x23, 0x34, 0x6c, 0x06, 0x21, 0xe5, 0xd9, 0xb5, 0x28, 0x1c, 0x66, 0xaa, 0x8b, 0x2b, 0x51, 0x9d,
+	0x3e, 0x80, 0x25, 0xb9, 0x37, 0x61, 0xae, 0xef, 0xb8, 0xf6, 0x18, 0x4a, 0x7f, 0x64, 0x77, 0x8c,
+	0xfb, 0xa6, 0x03, 0x33, 0x99, 0xa3, 0xee, 0x82, 0x4c, 0x89, 0x9b, 0x44, 0xc4, 0xab, 0xc6, 0x71,
+	0x10, 0x8a, 0xfc, 0xb6, 0x62, 0x99, 0x84, 0x01, 0xa1, 0x8d, 0xe7, 0x6e, 0x00, 0x4f, 0x69, 0x8a,
+	0x32, 0xe8, 0x17, 0xa0, 0xc2, 0xc8, 0xb1, 0x05, 0x2f, 0x8a, 0x64, 0x04, 0x15, 0xd5, 0xe2, 0x48,
+	0x5c, 0x28, 0x07, 0x9e, 0x4a, 0xa9, 0xb4, 0x52, 0xaf, 0x25, 0x49, 0x8f, 0xbb, 0x2b, 0x06, 0x24,
+	0x4f, 0x41, 0x99, 0xde, 0xe9, 0xe6, 0x73, 0xa7, 0x4b, 0x77, 0xba, 0x41, 0x4c, 0x13, 0x86, 0x44,
+	0xef, 0x74, 0xc9, 0x39, 0x28, 0x05, 0x75, 0xe9, 0x06, 0x40, 0xe2, 0x94, 0xd6, 0x56, 0xb1, 0x14,
+	0xd4, 0xdd, 0x1e, 0x54, 0x75, 0x4f, 0x25, 0x69, 0x29, 0xeb, 0x70, 0x46, 0x3e, 0x5b, 0x53, 0x44,
+	0x87, 0xd8, 0x45, 0x0f, 0xc0, 0x9c, 0x71, 0x17, 0xa5, 0x15, 0x17, 0x60, 0xcc, 0x8f, 0xea, 0x54,
+	0xaa, 0x83, 0x26, 0xc3, 0xcd, 0x82, 0x43, 0xdc, 0x9b, 0x30, 0x7b, 0x3d, 0x8c, 0x6e, 0x87, 0xcc,
+	0x57, 0x5d, 0x0e, 0x68, 0xbb, 0xce, 0x08, 0x37, 0xd8, 0x8f, 0xbc, 0x07, 0xe6, 0x50, 0x14, 0x30,
+	0xdd, 0x7e, 0x58, 0x1a, 0xd6, 0x7e, 0xe8, 0x7e, 0xc5, 0x81, 0xd3, 0xf9, 0x33, 0xed, 0x1f, 0x5b,
+	0x44, 0xf2, 0x05, 0x26, 0x8c, 0x3a, 0x0e, 0xbe, 0xd1, 0x15, 0x45, 0xf6, 0xe7, 0x60, 0x7a, 0xb7,
+	0x17, 0xb4, 0xeb, 0xf2, 0xbf, 0x94, 0x47, 0x9f, 0x0c, 0xd7, 0x2c, 0x18, 0x66, 0x30, 0xc9, 0x45,
+	0x80, 0xdd, 0x20, 0xf4, 0xe2, 0x83, 0x2d, 0x63, 0xed, 0xba, 0xa4, 0x5f, 0xd3, 0x10, 0xb4, 0xb0,
+	0xdc, 0xb7, 0xca, 0x60, 0x5a, 0x3c, 0x49, 0x43, 0x9e, 0xdb, 0x38, 0x23, 0xa7, 0x81, 0x2c, 0x31,
+	0x37, 0x9d, 0xa4, 0x95, 0xdc, 0xb1, 0xcd, 0x97, 0x1c, 0x98, 0x62, 0x41, 0x4f, 0xe0, 0xa5, 0xb4,
+	0x5e, 0x3b, 0x90, 0x51, 0xd5, 0x46, 0x11, 0x35, 0xfe, 0x35, 0x41, 0x36, 0x8a, 0x8d, 0x9b, 0x59,
+	0x33, 0x9c, 0xd0, 0x66, 0x4b, 0x3e, 0x2d, 0xab, 0x32, 0xe5, 0x62, 0x4e, 0xfa, 0x2a, 0xb9, 0x53,
+	0xbe, 0x0e, 0x8c, 0xc7, 0x34, 0x8d, 0xd5, 0xd1, 0xea, 0xd5, 0x91, 0xca, 0xc4, 0x69, 0x7c, 0xb0,
+	0x9d, 0xb2, 0xb0, 0xad, 0x69, 0x6d, 0x61, 0x7c, 0x18, 0x05, 0x17, 0x37, 0x01, 0xd2, 0x3f, 0x0b,
+	0x27, 0x2c, 0x83, 0x2c, 0x41, 0xd5, 0xeb, 0xa5, 0x51, 0x87, 0x4d, 0x10, 0x5f, 0x95, 0x8a, 0x55,
+	0xe8, 0x51, 0x00, 0x34, 0x38, 0xee, 0xeb, 0xe3, 0x90, 0x3b, 0x4b, 0x21, 0x3d, 0xbb, 0x1f, 0xd9,
+	0x29, 0xb0, 0x1f, 0x59, 0x4b, 0x32, 0xa8, 0x27, 0x99, 0xa5, 0x8d, 0xdd, 0x96, 0x97, 0x28, 0xa3,
+	0x7c, 0x41, 0xcd, 0xd1, 0x16, 0x1b, 0xbc, 0x77, 0xb8, 0xf0, 0x2b, 0xc7, 0xdb, 0xae, 0x99, 0x7e,
+	0x2e, 0x89, 0x86, 0x0b, 0xc3, 0x9a, 0xd3, 0x40, 0x41, 0xdf, 0xde, 0xb0, 0xcb, 0x47, 0x84, 0xbe,
+	0x9f, 0x17, 0x27, 0xec, 0x48, 0x93, 0x5e, 0x3b, 0x95, 0x6a, 0xb0, 0x59, 0x94, 0x55, 0x09, 0xaa,
+	0xe6, 0xa8, 0x5d, 0xfc, 0x47, 0x8b, 0x23, 0xf9, 0x24, 0x54, 0x93, 0xd4, 0x8b, 0xd3, 0x07, 0x3c,
+	0xad, 0xd3, 0x13, 0xbe, 0xad, 0x88, 0xa0, 0xa1, 0x47, 0x5e, 0x06, 0x68, 0x04, 0x61, 0x90, 0xb4,
+	0x1e, 0xb0, 0x7e, 0xca, 0x05, 0xbf, 0xac, 0x29, 0xa0, 0x45, 0x8d, 0xb9, 0x32, 0xae, 0xd4, 0xa2,
+	0x66, 0x51, 0xe1, 0xbb, 0xa6, 0x76, 0x65, 0xa8, 0x21, 0x68, 0x61, 0xb9, 0x9f, 0x87, 0x33, 0xf9,
+	0x2b, 0x3f, 0x32, 0x74, 0x6f, 0xc6, 0x51, 0xaf, 0x9b, 0xdf, 0x38, 0xf8, 0xc5, 0x10, 0x14, 0x30,
+	0xe6, 0xd0, 0xf7, 0x82, 0xb0, 0x9e, 0x77, 0xe8, 0xd7, 0x83, 0xb0, 0x8e, 0x1c, 0x72, 0x8c, 0x26,
+	0xed, 0xbf, 0x70, 0xe0, 0xc2, 0x51, 0x37, 0x93, 0xc8, 0x93, 0x30, 0x76, 0xdb, 0x8b, 0x43, 0xd9,
+	0x92, 0xc9, 0x3d, 0xc6, 0x4d, 0x2f, 0x0e, 0x91, 0x8f, 0x92, 0x7d, 0x98, 0x10, 0xfd, 0x08, 0x32,
+	0xec, 0xdd, 0x2c, 0xf0, 0x92, 0x14, 0x8b, 0x7d, 0x75, 0x36, 0x27, 0x1a, 0x21, 0x50, 0x72, 0x73,
+	0xaf, 0x01, 0xb9, 0xb1, 0x4f, 0xe3, 0x38, 0xa8, 0x5b, 0xdd, 0x13, 0xe4, 0x59, 0x98, 0xbe, 0xb5,
+	0x7d, 0x63, 0x73, 0x2b, 0x0a, 0x42, 0xde, 0x4d, 0x66, 0x9d, 0xe5, 0x5d, 0xb3, 0xc6, 0x31, 0x83,
+	0xe5, 0x7e, 0xa7, 0x04, 0x53, 0xd6, 0x05, 0xba, 0x63, 0xc4, 0x0c, 0xb9, 0x0b, 0x7f, 0xa5, 0x63,
+	0x5e, 0xf8, 0x7b, 0x1a, 0x2a, 0xdd, 0xa8, 0x1d, 0xf8, 0x81, 0x6e, 0xf2, 0x9a, 0xe6, 0xe5, 0x5a,
+	0x39, 0x86, 0x1a, 0x4a, 0x52, 0xa8, 0xea, 0x5b, 0x31, 0xf2, 0xd8, 0xbe, 0x90, 0x90, 0x49, 0xdb,
+	0x87, 0xb9, 0xed, 0x62, 0x18, 0x11, 0x17, 0x26, 0xb8, 0x72, 0x89, 0xe3, 0x7a, 0x79, 0xa8, 0xc9,
+	0xb5, 0x2e, 0x41, 0x09, 0x71, 0x7f, 0x50, 0x82, 0x2a, 0xd2, 0x6e, 0xb4, 0x12, 0xd3, 0x7a, 0x42,
+	0xde, 0x07, 0xe5, 0x5e, 0xdc, 0x96, 0x33, 0x35, 0x25, 0x89, 0x97, 0x5f, 0xc4, 0x75, 0x64, 0xe3,
+	0x19, 0x57, 0x5e, 0x3a, 0x51, 0x45, 0xbb, 0x7c, 0x64, 0x45, 0xfb, 0x79, 0x98, 0x49, 0x92, 0xd6,
+	0x56, 0x1c, 0xec, 0x7b, 0x29, 0x53, 0x15, 0x99, 0x67, 0x9a, 0x32, 0xe7, 0xf6, 0x55, 0x03, 0xc4,
+	0x2c, 0x2e, 0xb9, 0x02, 0x73, 0xa6, 0xb4, 0x4c, 0xe3, 0x94, 0xa7, 0x95, 0x22, 0x03, 0xd5, 0x85,
+	0x46, 0x53, 0x8c, 0x96, 0x08, 0xd8, 0xff, 0x0c, 0x59, 0x85, 0xd3, 0x99, 0x41, 0x26, 0x88, 0x48,
+	0x4f, 0xe7, 0x25, 0x9d, 0xd3, 0x19, 0x3a, 0x4c, 0x96, 0xbe, 0x27, 0xdc, 0xb7, 0x1d, 0x98, 0xd1,
+	0x93, 0xfa, 0x08, 0x72, 0xd5, 0x20, 0x9b, 0xab, 0xae, 0x8e, 0xb4, 0xcf, 0x4b, 0xb1, 0x87, 0x84,
+	0xe3, 0x7f, 0x30, 0x01, 0xc0, 0xef, 0xec, 0x06, 0xbc, 0x2d, 0xe4, 0x02, 0x8c, 0xc5, 0xb4, 0x1b,
+	0xe5, 0x6d, 0x8b, 0x61, 0x20, 0x87, 0xbc, 0x7b, 0x75, 0x66, 0x50, 0x9d, 0x7f, 0xfc, 0xc7, 0x58,
+	0xe7, 0xdf, 0x86, 0xb3, 0x41, 0x98, 0x50, 0xbf, 0x17, 0x4b, 0x17, 0x78, 0x35, 0x4a, 0xb4, 0xfe,
+	0x55, 0x6a, 0xef, 0x93, 0x84, 0xce, 0xae, 0x0d, 0x42, 0xc2, 0xc1, 0xcf, 0xb2, 0xf9, 0x54, 0x00,
+	0xbe, 0x41, 0x56, 0xac, 0xf4, 0x50, 0x8e, 0xa3, 0xc6, 0x60, 0xc1, 0x17, 0x0d, 0xbd, 0xdd, 0x36,
+	0x5d, 0x6f, 0x24, 0x7c, 0xcf, 0xb3, 0x82, 0xaf, 0x4b, 0x02, 0x70, 0x79, 0x1b, 0x0d, 0xce, 0x60,
+	0xbb, 0xab, 0x16, 0x64, 0x77, 0x70, 0x52, 0xbb, 0xd3, 0xd9, 0xd7, 0xd4, 0xd0, 0xcb, 0x5f, 0x6a,
+	0x2f, 0x98, 0x1e, 0xba, 0x17, 0x7c, 0x1c, 0x66, 0x83, 0xb0, 0x45, 0xe3, 0x20, 0xa5, 0x75, 0x6e,
+	0x08, 0xf3, 0x33, 0x7c, 0x22, 0xf4, 0x49, 0xe5, 0x5a, 0x06, 0x8a, 0x39, 0x6c, 0xf7, 0xf5, 0x12,
+	0x9c, 0x35, 0x06, 0xc2, 0x24, 0x0b, 0x1a, 0x4c, 0x4b, 0x78, 0xe7, 0xb1, 0x38, 0x9c, 0xb1, 0xbe,
+	0xdd, 0xa0, 0x43, 0x8a, 0x6d, 0x0d, 0x41, 0x0b, 0x8b, 0xad, 0x9f, 0x4f, 0x63, 0xde, 0x15, 0x91,
+	0xb7, 0x9e, 0x15, 0x39, 0x8e, 0x1a, 0x83, 0x7f, 0x1e, 0x82, 0xc6, 0xa9, 0xac, 0xb5, 0xe5, 0x4f,
+	0x05, 0x57, 0x0c, 0x08, 0x6d, 0x3c, 0xb6, 0x8f, 0xf9, 0x6a, 0xf1, 0x98, 0x05, 0x4d, 0x8b, 0x7d,
+	0x4c, 0xaf, 0x97, 0x86, 0x2a, 0x71, 0xf8, 0x69, 0xd2, 0x78, 0xbf, 0x38, 0x3c, 0xf5, 0xd0, 0x18,
+	0xee, 0x7f, 0x39, 0xf0, 0xde, 0x81, 0x53, 0xf1, 0x08, 0x5c, 0x62, 0x2f, 0xeb, 0x12, 0xb7, 0x46,
+	0x74, 0x89, 0x7d, 0xaf, 0x30, 0xc4, 0x3d, 0xfe, 0x83, 0x03, 0xb3, 0x06, 0xff, 0x11, 0xbc, 0x67,
+	0xa3, 0xb8, 0x6f, 0x3d, 0x18, 0xb9, 0x6b, 0xd5, 0xbe, 0x17, 0x7b, 0x9b, 0xbf, 0x98, 0x08, 0xe4,
+	0x96, 0x7d, 0x75, 0xd5, 0xf2, 0x88, 0xb8, 0x6a, 0x1f, 0x26, 0x78, 0x63, 0x7e, 0x52, 0x40, 0x34,
+	0x99, 0x65, 0xce, 0x4b, 0x27, 0x26, 0x9a, 0xe4, 0x7f, 0x13, 0x94, 0xdc, 0x78, 0xbb, 0x4e, 0x90,
+	0x30, 0x27, 0x55, 0x97, 0x25, 0x1e, 0xd3, 0xae, 0x23, 0xc7, 0x51, 0x63, 0xb8, 0x1d, 0x98, 0xcf,
+	0x12, 0x5f, 0xa5, 0x0d, 0x9e, 0xa4, 0x1f, 0xeb, 0x1d, 0x59, 0xc2, 0xca, 0x9f, 0x5a, 0xef, 0x79,
+	0xf9, 0xcb, 0x96, 0xcb, 0x0a, 0x80, 0x06, 0xc7, 0xfd, 0x13, 0x07, 0xce, 0x0c, 0x78, 0x99, 0x02,
+	0x4b, 0x5b, 0xa9, 0x31, 0xfe, 0x21, 0x17, 0x60, 0xeb, 0xb4, 0xe1, 0xa9, 0x84, 0xd0, 0x4a, 0x1f,
+	0x57, 0xc5, 0x30, 0x2a, 0xb8, 0xfb, 0x1f, 0x0e, 0x9c, 0xca, 0xca, 0x9a, 0x90, 0x6b, 0x40, 0xc4,
+	0xcb, 0xac, 0x06, 0x89, 0x1f, 0xed, 0xd3, 0xf8, 0x80, 0xbd, 0xb9, 0x90, 0xfa, 0x9c, 0xa4, 0x44,
+	0x96, 0xfb, 0x30, 0x70, 0xc0, 0x53, 0xe4, 0x2b, 0xfc, 0xac, 0x50, 0xcd, 0xb6, 0x52, 0x93, 0xed,
+	0xc2, 0xd4, 0xc4, 0xac, 0xa4, 0x1d, 0xce, 0x6b, 0x7e, 0x68, 0x33, 0x77, 0x7f, 0x54, 0x86, 0x69,
+	0xf5, 0x38, 0x4f, 0x3f, 0x0a, 0x4a, 0xdc, 0x32, 0xd7, 0x71, 0xcb, 0x27, 0xb8, 0x8e, 0x3b, 0x76,
+	0xbf, 0x84, 0x45, 0x5c, 0x0f, 0x35, 0x61, 0x8b, 0xe5, 0xe8, 0x77, 0x0c, 0x08, 0x6d, 0x3c, 0x26,
+	0x49, 0x3b, 0xd8, 0xa7, 0xe2, 0xa1, 0x89, 0xac, 0x24, 0xeb, 0x0a, 0x80, 0x06, 0x87, 0x49, 0x52,
+	0x0f, 0x1a, 0x0d, 0x1e, 0x3a, 0x58, 0x92, 0xb0, 0xd9, 0x41, 0x0e, 0x61, 0x18, 0xad, 0x28, 0xda,
+	0x93, 0xd1, 0x82, 0xc6, 0xb8, 0x1a, 0x45, 0x7b, 0xc8, 0x21, 0x64, 0x03, 0xce, 0x84, 0x51, 0xdc,
+	0xf1, 0xda, 0xc1, 0x6b, 0xb4, 0xae, 0xb9, 0xc8, 0x28, 0xe1, 0xa7, 0xe4, 0x03, 0x67, 0x36, 0xfb,
+	0x51, 0x70, 0xd0, 0x73, 0x4c, 0xfd, 0xba, 0x31, 0xad, 0x07, 0x7e, 0x6a, 0x53, 0x83, 0xac, 0xfa,
+	0x6d, 0xf5, 0x61, 0xe0, 0x80, 0xa7, 0xdc, 0xff, 0xe4, 0x1b, 0xd4, 0x90, 0xa6, 0xfd, 0x47, 0x96,
+	0xb7, 0x67, 0x15, 0x64, 0xec, 0x18, 0x0a, 0xc2, 0xf2, 0xe2, 0x24, 0x0a, 0x75, 0x5e, 0x3c, 0x3e,
+	0x34, 0x2f, 0xb6, 0xb0, 0xdc, 0xef, 0x8d, 0xc3, 0x13, 0xba, 0xdb, 0x93, 0xa6, 0xb7, 0xa3, 0x78,
+	0x2f, 0x08, 0x9b, 0xfc, 0x98, 0xe3, 0x9b, 0x0e, 0x4c, 0x0b, 0x45, 0x91, 0xd7, 0x8e, 0x44, 0x59,
+	0xdf, 0x2f, 0xa2, 0xaf, 0x34, 0xc3, 0x69, 0x71, 0xc7, 0xe2, 0x92, 0xbb, 0x72, 0x64, 0x83, 0x30,
+	0x23, 0x0e, 0x79, 0x0d, 0x40, 0x5d, 0x87, 0x6e, 0x14, 0x71, 0x23, 0x5c, 0x09, 0x87, 0xb4, 0x61,
+	0x42, 0xb0, 0x1d, 0xcd, 0x01, 0x2d, 0x6e, 0xe4, 0xcb, 0x0e, 0x4c, 0xb4, 0xc5, 0xac, 0x88, 0x32,
+	0xed, 0xa7, 0x8b, 0x9f, 0x15, 0x7b, 0x3e, 0xf4, 0xa6, 0x26, 0x67, 0x42, 0x32, 0x27, 0x08, 0x93,
+	0x41, 0xd8, 0x8c, 0x69, 0xa2, 0x2a, 0x08, 0x1f, 0xb4, 0xc2, 0x88, 0x45, 0x3f, 0x8a, 0x29, 0x0f,
+	0x1a, 0x22, 0xaf, 0x5e, 0xf3, 0xda, 0x5e, 0xe8, 0xd3, 0x78, 0x4d, 0xa0, 0x1b, 0xff, 0x2e, 0x07,
+	0x50, 0x11, 0xea, 0x6b, 0x96, 0x1e, 0x3f, 0x4e, 0xb3, 0xf4, 0xb9, 0x4f, 0xc0, 0x5c, 0xdf, 0x32,
+	0x9e, 0xe4, 0x56, 0xd7, 0xb9, 0x8f, 0xc2, 0xd4, 0x83, 0x5e, 0x08, 0xfb, 0xd3, 0x09, 0xe3, 0xa4,
+	0x37, 0xa3, 0x3a, 0xef, 0x12, 0x8e, 0xcd, 0x6a, 0xca, 0x08, 0xab, 0x28, 0xdd, 0xb0, 0xae, 0xce,
+	0xea, 0x41, 0xb4, 0xf9, 0x31, 0xcd, 0xec, 0x7a, 0x31, 0x0d, 0x1f, 0xaa, 0x66, 0x6e, 0x69, 0x0e,
+	0x68, 0x71, 0x23, 0x34, 0x73, 0x7a, 0xb0, 0x32, 0xe2, 0xe9, 0x01, 0x0b, 0xf7, 0x06, 0xde, 0x15,
+	0x7a, 0xd3, 0x81, 0xd9, 0x30, 0xa3, 0xaf, 0xb2, 0x90, 0xfc, 0x42, 0xe1, 0x86, 0x20, 0xae, 0x46,
+	0x64, 0xc7, 0x30, 0xc7, 0x9c, 0x2c, 0xc3, 0x29, 0xb5, 0x02, 0xd9, 0x6e, 0x5d, 0x9d, 0x6b, 0x63,
+	0x16, 0x8c, 0x79, 0x7c, 0xab, 0xdd, 0x7f, 0x62, 0x58, 0xbb, 0x3f, 0xd9, 0xd3, 0x37, 0x7b, 0x26,
+	0x8b, 0xbd, 0xd9, 0x03, 0x03, 0x6e, 0xf5, 0xdc, 0x84, 0xaa, 0x1f, 0x53, 0x2f, 0x7d, 0xc0, 0xdb,
+	0x1e, 0xfc, 0x03, 0x02, 0x2b, 0x8a, 0x00, 0x1a, 0x5a, 0xee, 0xd7, 0xcb, 0x70, 0x5a, 0x4d, 0x87,
+	0xaa, 0xb0, 0xb2, 0x0d, 0x47, 0xf0, 0x35, 0x91, 0x9b, 0xde, 0x70, 0xae, 0x2a, 0x00, 0x1a, 0x1c,
+	0x16, 0x32, 0x8a, 0xe8, 0x2d, 0xc9, 0x9f, 0x38, 0xc8, 0xa8, 0x10, 0x15, 0x9c, 0x7c, 0x7d, 0xe0,
+	0xe5, 0xba, 0x02, 0xce, 0xd7, 0xfa, 0xca, 0xc3, 0x27, 0xbc, 0x55, 0xf7, 0x86, 0x03, 0xa7, 0xf6,
+	0x32, 0x47, 0xba, 0xca, 0x91, 0x8e, 0xd2, 0xdb, 0x91, 0x3d, 0x24, 0x36, 0x2a, 0x98, 0x1d, 0x4f,
+	0x30, 0xcf, 0xda, 0xfd, 0x6f, 0x07, 0x6c, 0xaf, 0x72, 0xbc, 0x68, 0xc3, 0xba, 0x7a, 0x5b, 0xba,
+	0xff, 0xd5, 0x5b, 0x1d, 0x98, 0x94, 0x8f, 0x17, 0x97, 0x8e, 0x9d, 0x20, 0x2e, 0x1d, 0x1f, 0x1a,
+	0xc9, 0xbc, 0x0f, 0xca, 0xbd, 0xa0, 0x2e, 0x43, 0x4b, 0x53, 0x3f, 0x5e, 0x5b, 0x45, 0x36, 0xee,
+	0xfe, 0xe5, 0xb8, 0x49, 0x22, 0xe5, 0x01, 0xd1, 0x4f, 0xc4, 0x6b, 0x37, 0x74, 0xab, 0x8e, 0x78,
+	0xf3, 0xcd, 0xbe, 0x56, 0x9d, 0x5f, 0x3a, 0xf9, 0xd9, 0x9f, 0x98, 0xa0, 0x61, 0x9d, 0x3a, 0x93,
+	0x47, 0x1c, 0xfc, 0xdd, 0x82, 0x0a, 0x8b, 0xbe, 0x79, 0x1d, 0xa8, 0x92, 0x11, 0xaa, 0x72, 0x55,
+	0x8e, 0xdf, 0x3b, 0x5c, 0xf8, 0xd8, 0xc9, 0xc5, 0x52, 0x4f, 0xa3, 0xa6, 0x4f, 0x12, 0xa8, 0xb2,
+	0xdf, 0xfc, 0x8c, 0x52, 0xc6, 0xf5, 0x2f, 0x6a, 0x77, 0xa2, 0x00, 0x85, 0x1c, 0x80, 0x1a, 0x3e,
+	0x24, 0x84, 0x2a, 0xbf, 0xd2, 0xcb, 0x99, 0x8a, 0xf0, 0x7f, 0x4b, 0x9f, 0x16, 0x2a, 0xc0, 0xbd,
+	0xc3, 0x85, 0xe7, 0x4f, 0xce, 0x54, 0x3f, 0x8e, 0x86, 0x85, 0xfb, 0x4e, 0xd9, 0xe8, 0xae, 0xec,
+	0xd0, 0xfa, 0x89, 0xd0, 0xdd, 0xe7, 0x72, 0xba, 0x7b, 0xa1, 0x4f, 0x77, 0x67, 0xcd, 0x15, 0xd8,
+	0x8c, 0x36, 0x3e, 0xd2, 0x0d, 0xf2, 0xe8, 0x3c, 0x93, 0x87, 0x05, 0xaf, 0xf6, 0x82, 0x98, 0x26,
+	0x5b, 0x71, 0x2f, 0x0c, 0xc2, 0x26, 0xd7, 0xc5, 0x8a, 0x1d, 0x16, 0x64, 0xc0, 0x98, 0xc7, 0x77,
+	0xbf, 0xc3, 0xcf, 0x6d, 0xac, 0x46, 0x07, 0xb6, 0xc4, 0x6d, 0x7e, 0x31, 0x5a, 0xf4, 0x56, 0xe9,
+	0x25, 0x16, 0xb7, 0xa1, 0x05, 0x8c, 0xa4, 0x30, 0xb9, 0x2b, 0x2e, 0x8a, 0x15, 0xd0, 0x9d, 0x2b,
+	0xaf, 0x9c, 0xf1, 0xcb, 0x3d, 0xea, 0xfe, 0xd9, 0x3d, 0xf3, 0x13, 0x15, 0x2b, 0xf7, 0x1b, 0x65,
+	0x38, 0x95, 0xbb, 0xbf, 0x4b, 0x3e, 0x0c, 0x15, 0x75, 0x41, 0x3b, 0x5f, 0x2e, 0xd6, 0x1f, 0x96,
+	0xd2, 0x18, 0xe4, 0x33, 0x00, 0x75, 0xda, 0x6d, 0x47, 0x07, 0x3c, 0xea, 0x18, 0x3b, 0x71, 0xd4,
+	0xa1, 0xe3, 0xd3, 0x55, 0x4d, 0x05, 0x2d, 0x8a, 0xb2, 0x9b, 0x6c, 0x5c, 0xdc, 0x81, 0xcb, 0x76,
+	0x93, 0x59, 0xbd, 0xe9, 0x13, 0x8f, 0xb0, 0x37, 0x3d, 0x80, 0x53, 0x42, 0x3e, 0xdd, 0x4f, 0xf0,
+	0x00, 0x6d, 0x03, 0x67, 0x98, 0x2e, 0xad, 0x66, 0xc9, 0x60, 0x9e, 0xae, 0xfb, 0xd5, 0x12, 0x0b,
+	0xbc, 0xc4, 0x4c, 0x6f, 0xa8, 0x6a, 0xed, 0x07, 0x60, 0xc2, 0xeb, 0xa5, 0xad, 0xa8, 0xef, 0xca,
+	0xde, 0x32, 0x1f, 0x45, 0x09, 0x25, 0xeb, 0x30, 0x56, 0xf7, 0x52, 0xf5, 0x19, 0xc4, 0x93, 0x08,
+	0x67, 0x6a, 0x34, 0x5e, 0x4a, 0x91, 0x53, 0x21, 0x4f, 0xc2, 0x58, 0xea, 0x35, 0x33, 0x1f, 0x81,
+	0xd9, 0xf1, 0x9a, 0x09, 0xf2, 0x51, 0x7b, 0x53, 0x19, 0x3b, 0x62, 0x53, 0x79, 0xde, 0xfa, 0x34,
+	0xa7, 0x75, 0x06, 0xd0, 0xff, 0x45, 0x4d, 0x1e, 0xb7, 0x67, 0x71, 0xdd, 0x9f, 0x83, 0x69, 0xfb,
+	0x8b, 0x9b, 0xc7, 0xea, 0x68, 0x76, 0xff, 0x65, 0x0c, 0x66, 0x32, 0x3d, 0x27, 0x19, 0x15, 0x77,
+	0x8e, 0x54, 0xf1, 0xa7, 0x60, 0xbc, 0x1b, 0xf7, 0x42, 0x2a, 0x5b, 0x89, 0x34, 0x13, 0x66, 0xf1,
+	0x14, 0x05, 0x8c, 0xad, 0x4a, 0x3d, 0x3e, 0xc0, 0x5e, 0x28, 0x8b, 0xc5, 0x7a, 0x55, 0x56, 0xf9,
+	0x28, 0x4a, 0x28, 0xf9, 0x1c, 0x4c, 0x27, 0xdc, 0x15, 0x0a, 0xe7, 0x20, 0x2d, 0xe6, 0xca, 0xc8,
+	0x1f, 0x17, 0x90, 0x4d, 0x55, 0x3c, 0xed, 0xb6, 0x47, 0x30, 0xc3, 0x8e, 0x7c, 0xd1, 0xb1, 0x3f,
+	0xa8, 0x30, 0x31, 0xf2, 0xb9, 0x46, 0xbe, 0x97, 0x47, 0x98, 0xce, 0xfd, 0xbf, 0xab, 0xd0, 0xd5,
+	0x66, 0x3b, 0xf9, 0x10, 0xcc, 0x16, 0x06, 0x98, 0xec, 0x87, 0xa0, 0xda, 0xf1, 0xc2, 0xa0, 0x41,
+	0x93, 0x54, 0x7c, 0x1d, 0xb7, 0x2a, 0xb2, 0x9d, 0x0d, 0x35, 0x88, 0x06, 0xce, 0x3f, 0x3d, 0xcd,
+	0xdf, 0x4a, 0xe4, 0x2a, 0x55, 0xeb, 0xd3, 0xd3, 0x66, 0x18, 0x6d, 0x1c, 0xf7, 0xbb, 0x0e, 0x9c,
+	0x1d, 0x38, 0x13, 0xef, 0xde, 0xfa, 0x9f, 0xfb, 0xdd, 0x12, 0x9c, 0x19, 0xd0, 0x89, 0x45, 0xf6,
+	0x1f, 0xce, 0x17, 0x37, 0x64, 0x9f, 0xd7, 0xcc, 0x50, 0xad, 0x38, 0xd9, 0xb6, 0x63, 0x5c, 0x7f,
+	0xf9, 0xd1, 0xb9, 0x7e, 0xf7, 0x8f, 0x4b, 0x60, 0x7d, 0x0f, 0x86, 0xfc, 0x9a, 0xdd, 0x67, 0xe8,
+	0x14, 0xd2, 0x17, 0x27, 0x28, 0xeb, 0x26, 0x45, 0x31, 0x5f, 0x83, 0x7a, 0x16, 0xf3, 0x6a, 0x5a,
+	0x3a, 0x5a, 0x4d, 0x49, 0xa0, 0x5a, 0x39, 0xcb, 0x05, 0xb7, 0x72, 0x56, 0xfb, 0xda, 0x38, 0xbf,
+	0xe1, 0x08, 0xed, 0xca, 0xbd, 0x8f, 0xf1, 0xa5, 0xce, 0x7d, 0x7c, 0xe9, 0x87, 0xa1, 0x92, 0xd0,
+	0x76, 0x83, 0x45, 0x6f, 0xd2, 0xe7, 0x6a, 0x55, 0xd8, 0x96, 0xe3, 0xa8, 0x31, 0xc8, 0x45, 0x00,
+	0xaf, 0xdd, 0x8e, 0x6e, 0x5f, 0xea, 0x74, 0xd3, 0x03, 0xe9, 0x7d, 0x75, 0x54, 0xb1, 0xac, 0x21,
+	0x68, 0x61, 0xb9, 0x3f, 0x72, 0xc4, 0x42, 0xca, 0x20, 0xfc, 0xb9, 0xdc, 0x35, 0x89, 0xe3, 0xc7,
+	0xaf, 0x07, 0x00, 0xbe, 0xbe, 0x2c, 0x57, 0xc0, 0x97, 0x62, 0xcc, 0xcd, 0x3b, 0xfb, 0x3b, 0x26,
+	0x6a, 0x0c, 0x2d, 0x66, 0x19, 0x83, 0x29, 0x1f, 0x65, 0x30, 0xee, 0xbf, 0x3b, 0x90, 0xd9, 0x17,
+	0x48, 0x07, 0xc6, 0x99, 0x04, 0x07, 0x05, 0xdc, 0xeb, 0xb3, 0xe9, 0x32, 0x63, 0x92, 0x0a, 0xc1,
+	0x7f, 0xa2, 0xe0, 0x42, 0x02, 0x19, 0x7b, 0x97, 0x46, 0xbe, 0x3f, 0x6a, 0x73, 0x63, 0xa1, 0xbb,
+	0xfc, 0xea, 0xa8, 0x0e, 0xe2, 0xdd, 0xe7, 0x60, 0xae, 0x4f, 0x22, 0xde, 0x79, 0x1f, 0xa9, 0x6b,
+	0x8c, 0x96, 0xe2, 0xf1, 0xdb, 0x1b, 0x28, 0x60, 0x2c, 0x76, 0x3f, 0x9d, 0x27, 0x4f, 0x7e, 0xcf,
+	0x81, 0xb9, 0x24, 0x4f, 0xef, 0xa1, 0xcc, 0x9a, 0xae, 0x45, 0xf5, 0x81, 0xb0, 0x5f, 0x02, 0xf7,
+	0xef, 0xa4, 0x33, 0x12, 0x9f, 0x62, 0xd7, 0x9b, 0x88, 0x33, 0x74, 0x13, 0x61, 0x66, 0xe5, 0xb7,
+	0x68, 0xbd, 0xd7, 0xee, 0xeb, 0x03, 0xd9, 0x96, 0xe3, 0xa8, 0x31, 0x32, 0x9f, 0xab, 0x28, 0x1f,
+	0xf9, 0xb9, 0x8a, 0x67, 0x61, 0xda, 0xbe, 0x71, 0xcb, 0x8b, 0x62, 0xf2, 0x10, 0xc0, 0xbe, 0x9c,
+	0x8b, 0x19, 0xac, 0xdc, 0x47, 0x0f, 0xc6, 0x8f, 0xfc, 0xe8, 0xc1, 0xd3, 0x50, 0x91, 0x1f, 0x37,
+	0x57, 0x45, 0x57, 0xd1, 0x64, 0x22, 0xc7, 0x50, 0x43, 0x99, 0x53, 0xe8, 0x78, 0x61, 0xcf, 0x6b,
+	0xb3, 0x19, 0x92, 0x5d, 0x4b, 0xda, 0xa0, 0x36, 0x34, 0x04, 0x2d, 0x2c, 0x66, 0x22, 0xf9, 0xdb,
+	0xe6, 0x99, 0xde, 0x27, 0xe7, 0xc8, 0xde, 0xa7, 0x6c, 0x77, 0x4e, 0xe9, 0x58, 0xdd, 0x39, 0x76,
+	0xe3, 0x4c, 0xf9, 0xbe, 0x8d, 0x33, 0xef, 0x37, 0xb7, 0xdd, 0x44, 0x87, 0xcd, 0xd4, 0xa0, 0x9b,
+	0x6e, 0xc4, 0x85, 0x09, 0xdf, 0xd3, 0xcd, 0x8b, 0xd3, 0x22, 0x20, 0x5a, 0x59, 0xe6, 0x48, 0x12,
+	0x52, 0x5b, 0x7c, 0xeb, 0x9d, 0xf3, 0x8f, 0x7d, 0xff, 0x9d, 0xf3, 0x8f, 0xbd, 0xfd, 0xce, 0xf9,
+	0xc7, 0xbe, 0x70, 0xf7, 0xbc, 0xf3, 0xd6, 0xdd, 0xf3, 0xce, 0xf7, 0xef, 0x9e, 0x77, 0xde, 0xbe,
+	0x7b, 0xde, 0xf9, 0xd7, 0xbb, 0xe7, 0x9d, 0xdf, 0xf9, 0xe1, 0xf9, 0xc7, 0x5e, 0xae, 0x28, 0x5d,
+	0xfd, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x66, 0xa9, 0x1d, 0xb4, 0xbd, 0x67, 0x00, 0x00,
 }
 
 func (m *AWSAuthConfig) Marshal() (dAtA []byte, err error) {
@@ -7265,6 +7266,14 @@ func (m *SyncPolicyAutomated) MarshalToSizedBuffer(dAtA []byte) (int, error) {
 	var l int
 	_ = l
 	i--
+	if m.AllowEmpty {
+		dAtA[i] = 1
+	} else {
+		dAtA[i] = 0
+	}
+	i--
+	dAtA[i] = 0x18
+	i--
 	if m.SelfHeal {
 		dAtA[i] = 1
 	} else {
@@ -9223,6 +9232,7 @@ func (m *SyncPolicyAutomated) Size() (n int) {
 	_ = l
 	n += 2
 	n += 2
+	n += 2
 	return n
 }
 
@@ -10615,6 +10625,7 @@ func (this *SyncPolicyAutomated) String() string {
 	s := strings.Join([]string{`&SyncPolicyAutomated{`,
 		`Prune:` + fmt.Sprintf("%v", this.Prune) + `,`,
 		`SelfHeal:` + fmt.Sprintf("%v", this.SelfHeal) + `,`,
+		`AllowEmpty:` + fmt.Sprintf("%v", this.AllowEmpty) + `,`,
 		`}`,
 	}, "")
 	return s
@@ -25163,6 +25174,26 @@ func (m *SyncPolicyAutomated) Unmarshal(dAtA []byte) error {
 				}
 			}
 			m.SelfHeal = bool(v != 0)
+		case 3:
+			if wireType != 0 {
+				return fmt.Errorf("proto: wrong wireType = %d for field AllowEmpty", wireType)
+			}
+			var v int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowGenerated
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				v |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			m.AllowEmpty = bool(v != 0)
 		default:
 			iNdEx = preIndex
 			skippy, err := skipGenerated(dAtA[iNdEx:])
diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto
index b04363bed..59b81a5b9 100644
--- a/pkg/apis/application/v1alpha1/generated.proto
+++ b/pkg/apis/application/v1alpha1/generated.proto
@@ -1073,6 +1073,9 @@ message SyncPolicyAutomated {
 
   // SelfHeal enables auto-syncing if  (default: false)
   optional bool selfHeal = 2;
+
+  // AllowEmpty allows apps have zero live resources (default: false)
+  optional bool allowEmpty = 3;
 }
 
 // SyncStatus is a comparison result of application spec and deployed application.
diff --git a/pkg/apis/application/v1alpha1/openapi_generated.go b/pkg/apis/application/v1alpha1/openapi_generated.go
index ac1cb4432..3b70e90c3 100644
--- a/pkg/apis/application/v1alpha1/openapi_generated.go
+++ b/pkg/apis/application/v1alpha1/openapi_generated.go
@@ -3725,6 +3725,13 @@ func schema_pkg_apis_application_v1alpha1_SyncPolicyAutomated(ref common.Referen
 							Format:      "",
 						},
 					},
+					"allowEmpty": {
+						SchemaProps: spec.SchemaProps{
+							Description: "AllowEmpty allows apps have zero live resources (default: false)",
+							Type:        []string{"boolean"},
+							Format:      "",
+						},
+					},
 				},
 			},
 		},
diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go
index a00d9287c..41a330fe5 100644
--- a/pkg/apis/application/v1alpha1/types.go
+++ b/pkg/apis/application/v1alpha1/types.go
@@ -656,6 +656,8 @@ type SyncPolicyAutomated struct {
 	Prune bool `json:"prune,omitempty" protobuf:"bytes,1,opt,name=prune"`
 	// SelfHeal enables auto-syncing if  (default: false)
 	SelfHeal bool `json:"selfHeal,omitempty" protobuf:"bytes,2,opt,name=selfHeal"`
+	// AllowEmpty allows apps have zero live resources (default: false)
+	AllowEmpty bool `json:"allowEmpty,omitempty" protobuf:"bytes,3,opt,name=allowEmpty"`
 }
 
 // SyncStrategy controls the manner in which a sync is performed
diff --git a/reposerver/server.go b/reposerver/server.go
index 27ebc03db..cc158827a 100644
--- a/reposerver/server.go
+++ b/reposerver/server.go
@@ -64,6 +64,8 @@ func NewServer(metricsServer *metrics.MetricsServer, cache *reposervercache.Cach
 			grpc.Creds(credentials.NewTLS(tlsConfig)),
 			grpc.UnaryInterceptor(grpc_middleware.ChainUnaryServer(unaryInterceptors...)),
 			grpc.StreamInterceptor(grpc_middleware.ChainStreamServer(streamInterceptors...)),
+			grpc.MaxRecvMsgSize(apiclient.MaxGRPCMessageSize),
+			grpc.MaxSendMsgSize(apiclient.MaxGRPCMessageSize),
 		},
 	}, nil
 }
diff --git a/server/version/version.go b/server/version/version.go
index a151f23b1..806cfcbd4 100644
--- a/server/version/version.go
+++ b/server/version/version.go
@@ -34,16 +34,15 @@ func (s *Server) Version(context.Context, *empty.Empty) (*version.VersionMessage
 		}
 	}
 	if s.kustomizeVersion == "" {
-		kustomizeVersion, err := kustomize.Version()
+		kustomizeVersion, err := kustomize.Version(true)
 		if err == nil {
 			s.kustomizeVersion = kustomizeVersion
 		} else {
 			s.kustomizeVersion = err.Error()
 		}
-
 	}
 	if s.helmVersion == "" {
-		helmVersion, err := helm.Version()
+		helmVersion, err := helm.Version(true)
 		if err == nil {
 			s.helmVersion = helmVersion
 		} else {
diff --git a/ui/src/app/app.tsx b/ui/src/app/app.tsx
index 68b3ce44f..450627d16 100644
--- a/ui/src/app/app.tsx
+++ b/ui/src/app/app.tsx
@@ -9,6 +9,7 @@ import applications from './applications';
 import help from './help';
 import login from './login';
 import settings from './settings';
+import {VersionPanel} from './shared/components/version-info/version-info-panel';
 import {Provider} from './shared/context';
 import {services} from './shared/services';
 import requests from './shared/services/requests';
@@ -52,7 +53,7 @@ const navItems = [
     }
 ];
 
-const versionInfo = services.version.version();
+const versionLoader = services.version.version();
 
 async function isExpiredSSO() {
     try {
@@ -92,7 +93,7 @@ requests.onError.subscribe(async err => {
     }
 });
 
-export class App extends React.Component<{}, {popupProps: PopupProps; error: Error}> {
+export class App extends React.Component<{}, {popupProps: PopupProps; showVersionPanel: boolean; error: Error}> {
     public static childContextTypes = {
         history: PropTypes.object,
         apis: PropTypes.object
@@ -108,7 +109,7 @@ export class App extends React.Component<{}, {popupProps: PopupProps; error: Err
 
     constructor(props: {}) {
         super(props);
-        this.state = {popupProps: null, error: null};
+        this.state = {popupProps: null, error: null, showVersionPanel: false};
         this.popupManager = new PopupManager();
         this.notificationsManager = new NotificationsManager();
         this.navigationManager = new NavigationManager(history);
@@ -186,11 +187,15 @@ export class App extends React.Component<{}, {popupProps: PopupProps; error: Err
                                                     <Layout
                                                         navItems={navItems}
                                                         version={() => (
-                                                            <DataLoader load={() => versionInfo}>
-                                                                {msg => (
-                                                                    <Tooltip content={msg.Version}>
-                                                                        <span style={{whiteSpace: 'nowrap'}}>{msg.Version}</span>
-                                                                    </Tooltip>
+                                                            <DataLoader load={() => versionLoader}>
+                                                                {version => (
+                                                                    <React.Fragment>
+                                                                        <Tooltip content={version.Version}>
+                                                                            <a style={{color: 'white'}} onClick={() => this.setState({showVersionPanel: true})}>
+                                                                                {version.Version}
+                                                                            </a>
+                                                                        </Tooltip>
+                                                                    </React.Fragment>
                                                                 )}
                                                             </DataLoader>
                                                         )}>
@@ -219,6 +224,7 @@ export class App extends React.Component<{}, {popupProps: PopupProps; error: Err
                     </Provider>
                 </PageContext.Provider>
                 <Notifications notifications={this.notificationsManager.notifications} />
+                <VersionPanel version={versionLoader} isShown={this.state.showVersionPanel} onClose={() => this.setState({showVersionPanel: false})} />
             </React.Fragment>
         );
     }
diff --git a/ui/src/app/applications/components/application-details/application-details.scss b/ui/src/app/applications/components/application-details/application-details.scss
index bb9a77a61..1e478e338 100644
--- a/ui/src/app/applications/components/application-details/application-details.scss
+++ b/ui/src/app/applications/components/application-details/application-details.scss
@@ -71,6 +71,17 @@
         }
     }
 
+    &__resource-icon{
+        text-align: center;
+        position: absolute;
+        left: 0;
+        top: 10px;
+        width: 60px;
+        line-height: 1;
+        color: $argo-color-gray-5;
+        font-size: 0.8em;
+    }
+
     .application-resource-tree {
         margin: 0 auto;
     }
diff --git a/ui/src/app/applications/components/application-details/application-resource-list.tsx b/ui/src/app/applications/components/application-details/application-resource-list.tsx
index b0d3c469b..a5069ed3f 100644
--- a/ui/src/app/applications/components/application-details/application-resource-list.tsx
+++ b/ui/src/app/applications/components/application-details/application-resource-list.tsx
@@ -3,6 +3,7 @@ import * as React from 'react';
 
 import * as models from '../../../shared/models';
 import {ResourceIcon} from '../resource-icon';
+import {ResourceLabel} from '../resource-label';
 import {ComparisonStatusIcon, HealthStatusIcon, nodeKey} from '../utils';
 
 export const ApplicationResourceList = ({
@@ -30,7 +31,11 @@ export const ApplicationResourceList = ({
                 <div key={nodeKey(res)} className='argo-table-list__row' onClick={() => onNodeClick(nodeKey(res))}>
                     <div className='row'>
                         <div className='columns small-1 xxxlarge-1'>
-                            <ResourceIcon kind={res.kind} />
+                            <div className='application-details__resource-icon'>
+                                <ResourceIcon kind={res.kind} />
+                                <br />
+                                <div>{ResourceLabel({kind: res.kind})}</div>
+                            </div>
                         </div>
                         <div className='columns small-2 xxxlarge-2'>{res.name}</div>
                         <div className='columns small-3 xxxlarge-4'>{[res.group, res.kind].filter(item => !!item).join('/')}</div>
diff --git a/ui/src/app/shared/components/version-info/version-info-panel.tsx b/ui/src/app/shared/components/version-info/version-info-panel.tsx
new file mode 100644
index 000000000..757550e47
--- /dev/null
+++ b/ui/src/app/shared/components/version-info/version-info-panel.tsx
@@ -0,0 +1,111 @@
+import {DataLoader, SlidingPanel, Tooltip} from 'argo-ui';
+import * as React from 'react';
+import {VersionMessage} from '../../models';
+
+interface VersionPanelProps {
+    isShown: boolean;
+    onClose: () => void;
+    version: Promise<VersionMessage>;
+}
+
+type CopyState = 'success' | 'failed' | undefined;
+
+export class VersionPanel extends React.Component<VersionPanelProps, {copyState: CopyState}> {
+    private readonly header = 'Argo CD Server Version';
+
+    constructor(props: VersionPanelProps) {
+        super(props);
+        this.state = {copyState: undefined};
+    }
+
+    public render() {
+        return (
+            <DataLoader load={() => this.props.version}>
+                {version => {
+                    return (
+                        <SlidingPanel header={this.header} isShown={this.props.isShown} onClose={() => this.props.onClose()} hasCloseButton={true} isNarrow={true}>
+                            <div className='argo-table-list'>{this.buildVersionTable(version)}</div>
+                            <div>
+                                <Tooltip content='Copy all version info as JSON'>{this.getCopyButton(version)}</Tooltip>
+                            </div>
+                        </SlidingPanel>
+                    );
+                }}
+            </DataLoader>
+        );
+    }
+
+    /**
+     * Formats the version data and renders the table rows.
+     */
+    private buildVersionTable(version: VersionMessage): JSX.Element {
+        const formattedVersion = {
+            'Argo CD': version.Version,
+            'Build Date': version.BuildDate,
+            'Go': version.GoVersion,
+            'Compiler': version.Compiler,
+            'Platform': version.Platform,
+            'ksonnet': version.KsonnetVersion,
+            'kustomize': version.KustomizeVersion,
+            'Helm': version.HelmVersion,
+            'kubectl': version.KubectlVersion
+        };
+
+        return (
+            <React.Fragment>
+                {Object.entries(formattedVersion).map(([key, value]) => {
+                    return (
+                        <div className='argo-table-list__row' key={key}>
+                            <div className='row'>
+                                <div className='columns small-4' title={key}>
+                                    <strong>{key}</strong>
+                                </div>
+                                <div className='columns'>
+                                    <Tooltip content={value}>
+                                        <span>{value}</span>
+                                    </Tooltip>
+                                </div>
+                            </div>
+                        </div>
+                    );
+                })}
+            </React.Fragment>
+        );
+    }
+
+    private getCopyButton(version: VersionMessage): JSX.Element {
+        let img: string;
+        let text: string;
+        if (this.state.copyState === 'success') {
+            img = 'fa-check';
+            text = 'Copied';
+        } else if (this.state.copyState === 'failed') {
+            img = 'fa-times';
+            text = 'Copy Failed';
+        } else {
+            img = 'fa-copy';
+            text = 'Copy JSON';
+        }
+
+        return (
+            <button className='argo-button argo-button--base' style={{marginTop: '1em', minWidth: '18ch'}} onClick={() => this.onCopy(version)}>
+                <i className={'fa ' + img} />
+                &nbsp;&nbsp;{text}
+            </button>
+        );
+    }
+
+    private async onCopy(version: VersionMessage): Promise<void> {
+        const stringifiedVersion = JSON.stringify(version, undefined, 4);
+        try {
+            await navigator.clipboard.writeText(stringifiedVersion);
+            this.setState({copyState: 'success'});
+        } catch (err) {
+            this.setState({copyState: 'failed'});
+        }
+
+        setTimeout(() => {
+            this.setState({copyState: undefined});
+        }, 750);
+    }
+}
diff --git a/ui/src/app/shared/models.ts b/ui/src/app/shared/models.ts
index fbdd05983..a8c166d8d 100644
--- a/ui/src/app/shared/models.ts
+++ b/ui/src/app/shared/models.ts
@@ -697,6 +697,15 @@ export interface ApplicationSyncWindowState {
 
 export interface VersionMessage {
     Version: string;
+    BuildDate: string;
+    GoVersion: string;
+    Compiler: string;
+    Platform: string;
+    KsonnetVersion: string;
+    KustomizeVersion: string;
+    HelmVersion: string;
+    KubectlVersion: string;
+    JsonnetVersion: string;
 }
 
 export interface Token {
diff --git a/util/helm/helm.go b/util/helm/helm.go
index 67b662d3c..5f44e33df 100644
--- a/util/helm/helm.go
+++ b/util/helm/helm.go
@@ -86,8 +86,16 @@ func (h *helm) Dispose() {
 	h.cmd.Close()
 }
 
-func Version() (string, error) {
-	cmd := exec.Command("helm", "version", "--client")
+func Version(shortForm bool) (string, error) {
+	executable := "helm"
+	cmdArgs := []string{"version", "--client"}
+	if shortForm {
+		cmdArgs = append(cmdArgs, "--short")
+	}
+	cmd := exec.Command(executable, cmdArgs...)
+	// example version output:
+	// long: "version.BuildInfo{Version:\"v3.3.1\", GitCommit:\"249e5215cde0c3fa72e27eb7a30e8d55c9696144\", GitTreeState:\"clean\", GoVersion:\"go1.14.7\"}"
+	// short: "v3.3.1+g249e521"
 	version, err := executil.RunWithRedactor(cmd, redactor)
 	if err != nil {
 		return "", fmt.Errorf("could not get helm version: %s", err)
diff --git a/util/kustomize/kustomize.go b/util/kustomize/kustomize.go
index 862e8e8f2..057fcfb63 100644
--- a/util/kustomize/kustomize.go
+++ b/util/kustomize/kustomize.go
@@ -187,13 +187,35 @@ func IsKustomization(path string) bool {
 	return false
 }
 
-func Version() (string, error) {
-	cmd := exec.Command("kustomize", "version")
-	out, err := executil.Run(cmd)
+func Version(shortForm bool) (string, error) {
+	executable := "kustomize"
+	cmdArgs := []string{"version"}
+	if shortForm {
+		cmdArgs = append(cmdArgs, "--short")
+	}
+	cmd := exec.Command(executable, cmdArgs...)
+	// example version output:
+	// long: "{Version:kustomize/v3.8.1 GitCommit:0b359d0ef0272e6545eda0e99aacd63aef99c4d0 BuildDate:2020-07-16T00:58:46Z GoOs:linux GoArch:amd64}"
+	// short: "{kustomize/v3.8.1  2020-07-16T00:58:46Z  }"
+	version, err := executil.Run(cmd)
 	if err != nil {
 		return "", fmt.Errorf("could not get kustomize version: %s", err)
 	}
-	return strings.TrimSpace(out), nil
+	version = strings.TrimSpace(version)
+	if shortForm {
+		// trim the curly braces
+		version = strings.TrimPrefix(version, "{")
+		version = strings.TrimSuffix(version, "}")
+		version = strings.TrimSpace(version)
+
+		// remove double space in middle
+		version = strings.ReplaceAll(version, "  ", " ")
+
+		// remove extra 'kustomize/' before version
+		version = strings.TrimPrefix(version, "kustomize/")
+
+	}
+	return version, nil
 }
 
 func getImageParameters(objs []*unstructured.Unstructured) []Image {


Test patch:
diff --git a/controller/appcontroller_test.go b/controller/appcontroller_test.go
index 5cc655f1c..32e801459 100644
--- a/controller/appcontroller_test.go
+++ b/controller/appcontroller_test.go
@@ -288,6 +288,31 @@ func TestAutoSync(t *testing.T) {
 	assert.False(t, app.Operation.Sync.Prune)
 }
 
+func TestAutoSyncNotAllowEmpty(t *testing.T) {
+	app := newFakeApp()
+	app.Spec.SyncPolicy.Automated.Prune = true
+	ctrl := newFakeController(&fakeData{apps: []runtime.Object{app}})
+	syncStatus := argoappv1.SyncStatus{
+		Status:   argoappv1.SyncStatusCodeOutOfSync,
+		Revision: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
+	}
+	cond := ctrl.autoSync(app, &syncStatus, []argoappv1.ResourceStatus{})
+	assert.NotNil(t, cond)
+}
+
+func TestAutoSyncAllowEmpty(t *testing.T) {
+	app := newFakeApp()
+	app.Spec.SyncPolicy.Automated.Prune = true
+	app.Spec.SyncPolicy.Automated.AllowEmpty = true
+	ctrl := newFakeController(&fakeData{apps: []runtime.Object{app}})
+	syncStatus := argoappv1.SyncStatus{
+		Status:   argoappv1.SyncStatusCodeOutOfSync,
+		Revision: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
+	}
+	cond := ctrl.autoSync(app, &syncStatus, []argoappv1.ResourceStatus{})
+	assert.Nil(t, cond)
+}
+
 func TestSkipAutoSync(t *testing.T) {
 	// Verify we skip when we previously synced to it in our most recent history
 	// Set current to 'aaaaa', desired to 'aaaa' and mark system OutOfSync
diff --git a/controller/cache/info_test.go b/controller/cache/info_test.go
index b29c874bf..30e02dd7a 100644
--- a/controller/cache/info_test.go
+++ b/controller/cache/info_test.go
@@ -71,6 +71,37 @@ var (
       ingress:
       - ip: 107.178.210.11`)
 
+	testIngressWildCardPath = strToUnstructured(`
+  apiVersion: extensions/v1beta1
+  kind: Ingress
+  metadata:
+    name: helm-guestbook
+    namespace: default
+    uid: "4"
+  spec:
+    backend:
+      serviceName: not-found-service
+      servicePort: 443
+    rules:
+    - host: helm-guestbook.com
+      http:
+        paths:
+        - backend:
+            serviceName: helm-guestbook
+            servicePort: 443
+          path: /*
+        - backend:
+            serviceName: helm-guestbook
+            servicePort: https
+          path: /*
+    tls:
+    - host: helm-guestbook.com
+    secretName: my-tls-secret
+  status:
+    loadBalancer:
+      ingress:
+      - ip: 107.178.210.11`)
+
 	testIngressWithoutTls = strToUnstructured(`
   apiVersion: extensions/v1beta1
   kind: Ingress
@@ -159,6 +190,30 @@ func TestGetIngressInfo(t *testing.T) {
 	}, info.NetworkingInfo)
 }
 
+func TestGetIngressInfoWildCardPath(t *testing.T) {
+	info := &ResourceInfo{}
+	populateNodeInfo(testIngressWildCardPath, info)
+	assert.Equal(t, 0, len(info.Info))
+	sort.Slice(info.NetworkingInfo.TargetRefs, func(i, j int) bool {
+		return strings.Compare(info.NetworkingInfo.TargetRefs[j].Name, info.NetworkingInfo.TargetRefs[i].Name) < 0
+	})
+	assert.Equal(t, &v1alpha1.ResourceNetworkingInfo{
+		Ingress: []v1.LoadBalancerIngress{{IP: "107.178.210.11"}},
+		TargetRefs: []v1alpha1.ResourceRef{{
+			Namespace: "default",
+			Group:     "",
+			Kind:      kube.ServiceKind,
+			Name:      "not-found-service",
+		}, {
+			Namespace: "default",
+			Group:     "",
+			Kind:      kube.ServiceKind,
+			Name:      "helm-guestbook",
+		}},
+		ExternalURLs: []string{"https://helm-guestbook.com/"},
+	}, info.NetworkingInfo)
+}
+
 func TestGetIngressInfoWithoutTls(t *testing.T) {
 	info := &ResourceInfo{}
 	populateNodeInfo(testIngressWithoutTls, info)
diff --git a/test/container/Procfile b/test/container/Procfile
index 15be79365..4b15b28c8 100644
--- a/test/container/Procfile
+++ b/test/container/Procfile
@@ -1,6 +1,6 @@
 controller: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true go run ./cmd/argocd-application-controller/main.go --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081}"
 api-server: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true go run ./cmd/argocd-server/main.go --loglevel debug --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379} --disable-auth=${ARGOCD_E2E_DISABLE_AUTH:-'true'} --insecure --dex-server http://localhost:${ARGOCD_E2E_DEX_PORT:-5556} --repo-server localhost:${ARGOCD_E2E_REPOSERVER_PORT:-8081} --port ${ARGOCD_E2E_APISERVER_PORT:-8080} --staticassets ui/dist/app"
-dex: sh -c "test $ARGOCD_IN_CI = true && exit 0; go run github.com/argoproj/argo-cd/cmd/argocd-util gendexcfg -o `pwd`/dist/dex.yaml && docker run --rm -p ${ARGOCD_E2E_DEX_PORT:-5556}:${ARGOCD_E2E_DEX_PORT:-5556} -v `pwd`/dist/dex.yaml:/dex.yaml quay.io/dexidp/dex:v2.22.0 serve /dex.yaml"
+dex: sh -c "test $ARGOCD_IN_CI = true && exit 0; go run github.com/argoproj/argo-cd/cmd/argocd-util gendexcfg -o `pwd`/dist/dex.yaml && docker run --rm -p ${ARGOCD_E2E_DEX_PORT:-5556}:${ARGOCD_E2E_DEX_PORT:-5556} -v `pwd`/dist/dex.yaml:/dex.yaml quay.io/dexidp/dex:v2.25.0 serve /dex.yaml"
 redis: sh -c "/usr/local/bin/redis-server --save "" --appendonly no --port ${ARGOCD_E2E_REDIS_PORT:-6379}"
 repo-server: sh -c "FORCE_LOG_COLORS=1 ARGOCD_FAKE_IN_CLUSTER=true ARGOCD_GNUPGHOME=${ARGOCD_GNUPGHOME:-/tmp/argocd-local/gpg/keys} ARGOCD_GPG_DATA_PATH=${ARGOCD_GPG_DATA_PATH:-/tmp/argocd-local/gpg/source} go run ./cmd/argocd-repo-server/main.go --loglevel debug --port ${ARGOCD_E2E_REPOSERVER_PORT:-8081} --redis localhost:${ARGOCD_E2E_REDIS_PORT:-6379}"
 ui: sh -c "test $ARGOCD_IN_CI = true && exit 0; cd ui && ARGOCD_E2E_YARN_HOST=0.0.0.0 ${ARGOCD_E2E_YARN_CMD:-yarn} start"
diff --git a/util/health/health_test.go b/util/health/health_test.go
index 221793ac3..4952bb009 100644
--- a/util/health/health_test.go
+++ b/util/health/health_test.go
@@ -111,7 +111,7 @@ func TestAppOfAppsHealth(t *testing.T) {
 		degradedAndHealthyLiveObjects := []*unstructured.Unstructured{degradedApp, healthyApp}
 		healthStatus, err := SetApplicationHealth(degradedAndHealthyStatuses, degradedAndHealthyLiveObjects, nil, noFilter)
 		assert.NoError(t, err)
-		assert.Equal(t, health.HealthStatusDegraded, healthStatus.Status)
+		assert.Equal(t, health.HealthStatusHealthy, healthStatus.Status)
 	}
 
 }
diff --git a/util/helm/helm_test.go b/util/helm/helm_test.go
index c31e67ca4..27a79aad1 100644
--- a/util/helm/helm_test.go
+++ b/util/helm/helm_test.go
@@ -165,7 +165,7 @@ func TestHelmArgCleaner(t *testing.T) {
 }
 
 func TestVersion(t *testing.T) {
-	ver, err := Version()
+	ver, err := Version(false)
 	assert.NoError(t, err)
 	assert.NotEmpty(t, ver)
 }
diff --git a/util/kustomize/kustomize_test.go b/util/kustomize/kustomize_test.go
index 9ad0c38ac..2996b2b7e 100644
--- a/util/kustomize/kustomize_test.go
+++ b/util/kustomize/kustomize_test.go
@@ -101,7 +101,7 @@ func TestParseKustomizeBuildOptions(t *testing.T) {
 }
 
 func TestVersion(t *testing.T) {
-	ver, err := Version()
+	ver, err := Version(false)
 	assert.NoError(t, err)
 	assert.NotEmpty(t, ver)
 }